Прежде всего, я вообще не специалист по асинхронному обследованию, я только что изучил эту тему. ИМХО, если вы используете XAMPP, тогда вы теряете возможность делать длинный опрос, потому что Apache использует поток/процессы (в зависимости от конфигурации) для каждого запроса.
Что вам нужно, это неблокирующий веб-сервер, такой как Tornado, который позволяет разбивать запросы на две части, из которых вторая запускается на какое-то событие, но между тем сервер может принимать последующие входящие запросы.
Пример из Tornado documentation/license /:
class MainHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
http = tornado.httpclient.AsyncHTTPClient()
http.fetch("http://friendfeed-api.com/v2/feed/bret",
callback=self.async_callback(self.on_response))
def on_response(self, response):
if response.error: raise tornado.web.HTTPError(500)
json = tornado.escape.json_decode(response.body)
self.write("Fetched " + str(len(json["entries"])) + " entries "
"from the FriendFeed API")
self.finish()
- насколько я знаю, что это не возможно, под Apache - в котором выборке является неотъемлемой частью запроса обработчика, который, конечно же блока, пока это не полный - так что вы заканчиваете с замороженной нитью или процессом.
Другая известная библиотека для выполнения неблокирующих услуг в Python - Twisted, но я мало знаю об этом, только то, что она также может помочь вам в обработке большого количества соединений только с одним потоком/процессом.
Я думаю, вы хотите сказать, что «Apache не подходит для кометы», а не «PHP не подходит для кометы» – algorithmicCoder