Фоновый веб-скрипт для сервера APM - PullRequest
2 голосов
/ 24 июня 2011

Я использую Twitter API с PHP, разрабатываю тесты.Это тесты типа «кто твой лучший друг», «каковы твои частые ключевые слова», «как часто ты чирикаешь», но так как ответ от сервера API Twitter занимает вечность, скрипт PHP запускается в течение 30 секунд илиБольше.Это определенно пустая трата ресурсов, и я хотел бы улучшить эту задачу в следующей последовательности.

«Выполнить тест» → щелкнуть → PHP-скрипт запускает фоновый сценарий → автообновление с помощью ajax и постоянно проверять → страницу PHPпроверяет, завершен ли фоновый скрипт и возвращает ли его значения (возможно, в файл или в БД)

Есть ли способ создать фоновый скрипт?Я думал о Python, но я уверен, что вы, ребята, могли бы дать мне лучшую идею.

Ответы [ 3 ]

0 голосов
/ 24 июня 2011

Я думаю, что ajax-интерфейс будет вашим лучшим выбором, пользователь может запустить скрипт через AJAX, который запустит обработку в фоновом режиме. Затем я бы использовал автоматическое обновление ajax на странице, которая пингует простую страницу, чтобы увидеть, обрабатывается ли задание (для отображения ожидающего сообщения), и если оно закончилось, оно может либо перезагрузить всю страницу, либо просто получить соответствующие данные возвращаются с сервера для просмотра.

Ваш веб-сервер становится вашим фоновым менеджером потоков (просто убедитесь, что он не прекращает обработку, если клиент движется), а браузер клиентов - это механизм, который проверяет новую информацию каждые 5 секунд или около того. Если вы укажете на автоматическое обновление ajax на очень простую страницу, то вы сможете поддерживать очень низкую нагрузку на сервер в течение тысяч проверяющих соединений. Должно быть действительно легко сделать доказательство концепции для чего-то подобного!

0 голосов
/ 24 июня 2011

Если вам не нужны частичные результаты, вы можете использовать обычный AJAX и просто держать соединение открытым до тех пор, пока не будет получен результат (это иногда называется Reverse Ajax ). Вы можете реализовать это на PHP, не нужно использовать Python (хотя Python, безусловно, тоже подходит для этой работы).

Более важным, чем язык, является веб-сервер, поддерживающий большое количество одновременных потоков & ndash; большинство веб-серверов работают с ограниченным пулом потоков. Давние соединения используют этот пул. Поэтому либо используйте платформу с высокой степенью параллелизма, такую ​​как node.js , либо просто кешируйте результат и тем самым ограничьте количество одновременных, долго работающих потоков.

0 голосов
/ 24 июня 2011

Посмотрите на node.js. Это серверная JavaScript-библиотека, созданная на основе googles chrome engine с большой поддержкой сетевых технологий, встроенная в

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...