Intereting Posts
Должен ли PHP_EOL использоваться в электронных письмах? Обработка значений unicode в параметрах GET с помощью PHP Laravel 4 Запомнить меня истекает время PHP: удалить пустые строки массива в многомерном массиве Как узнать, вызывается ли страница через Ajax или ее собственный печать динамически заданных проприет в объекте Какое преимущество использует фреймворк, такой как CodeIgniter или CakePHP, с использованием PHP? доступ к данным сеанса доступа с помощью opencart через php-файл взорвать список из двух элементов в массиве в качестве значения ключа => двухсекционный сеанс с кодом Блокировать веб-приложение работает только для интрасети Где я должен поместить этот код в Laravel? Как заставить phpexcel вести ведущие 0 в телефонных номерах? Laravel 5.2 – Каждый маршрут перенаправляется на главную страницу Как установить часовой пояс базы данных в application.ini

Реализация длинного опроса с помощью jQuery и PHP

Я хочу создать чат, основанный на JavaScript (jQuery будет использоваться для AJAX) и PHP.

Я слышал, что хороший способ сделать это – использовать длительный опрос.

Я понимаю эту идею, но я не знаю, как ее реализовать на стороне сервера.

Бесконечный цикл звучит как плохая идея.

Вы не хотите создавать бесконечный цикл, но вы можете установить тайм-аут. В основном цикл для X секунд ждет каких-то данных, и если этого не произойдет, отправьте ответ клиенту, в котором сообщается, что ему нужно инициировать новый запрос, который будет иметь тот же период таймаута.

$source; // some data source - db, etc $data = null; // our return data $timeout = 30; // timeout in seconds $now = time(); // start time // loop for $timeout seconds from $now until we get $data while((time() - $now) < $timeout) { // fetch $data $data = $source->getData(); // if we got $data, break the loop if (!empty($data)) break; // wait 1 sec to check for new $data usleep(10000); } // if there is no $data, tell the client to re-request (arbitrary status message) if (empty($data)) $data = array('status'=>'no-data'); // send $data response to client echo json_encode($data); 

реализация такого типа чата не является хорошей идеей в php, вы можете использовать CometChat , Nodjs, и если вы не можете устанавливать скрипты на свой сервер, чем использовать доступные API для отправки в реальном времени данных,

таких как Pubnub , Pushemr , Beaconpush .