Можно ли использовать ajax для достижения истинного многопоточного? если может, как это сделать? пожалуйста, дайте мне некоторую связанную информацию, веб-сайт или книги. спасибо ~!
Ajax multi-threaded
Ответ 1
Это зависит от того, что вы подразумеваете под "многопоточным".
Javascript-код явно односторонний. Никакой код Javascript не прервет любой другой Javascript-код, выполняемый в настоящее время на той же странице. Запрос AJAX (XHR) заставит браузер сделать что-то и (как правило) вызвать обратный вызов, когда он будет завершен.
На сервере каждый запрос Ajax представляет собой отдельный HTTP-запрос. Каждый из них будет выполняться в своем потоке. В зависимости от конфигурации веб-сервера они могут даже не выполняться на одном компьютере. Но каждый экземпляр PHP script будет полностью разделен, даже если вы вызываете тот же script. Не существует общего состояния как такового.
Теперь браузеры обычно ограничивают количество одновременных запросов Ajax, которые страница может создавать на основе каждого узла. Это число, как правило, 2. Я считаю, вы можете изменить его, но поскольку большинство людей будет иметь значение по умолчанию, вы должны предположить, что это будет 2. Больше запросов, чем это будет очереди, пока не будет выполнен существующий запрос. Это может привести к необходимости раздражать такие вещи, как создание нескольких имен узлов, таких как req1.example.com, req2.example.com и т.д.
Единственное исключение - сеансы, но они не многопоточны. Запуск сеанса блокирует все другие скрипты, пытающиеся запустить тот же сеанс (на основе cookie). Это одна из причин, по которой вам необходимо минимизировать время, в течение которого открыт сеанс. Возможно, вы могли бы использовать базу данных или что-то вроде memcache для обмена сообщениями inter- script, но на самом деле это не то, о чем говорит PHP.
PHP лучше всего подходит для простой обработки запросов. Запрос получен. Он обрабатывается и возвращается ответ. Этот ответ может быть HTML, XML, текст, JSON или что-то еще. Запрос может быть HTTP-запросом в браузере или запросом AJAX.
Каждый из этих циклов запроса-ответа должен, по возможности, рассматриваться как отдельные объекты.
Другой метод - длительный опрос. HTTP-запрос отправляется на сервер и может не возвращаться в течение длительного времени. Это используется для веб-чатов и других сценариев типа "серверный push". Иногда частичные ответы будут удалены без завершения запроса.
Последний вариант (по крайней мере, Unix/Linux) заключается в том, что PHP может создавать процессы, но это не похоже на то, о чем вы говорите.
Итак, что именно вы пытаетесь сделать?
Ответ 2
На самом деле вы не можете многопоточно, но то, что делает множество более крупных веб-сайтов, - это очистить вывод для страницы, а затем использовать Ajax для загрузки дополнительных компонентов "на лету", чтобы пользователь видел контент, даже когда браузер все еще запрашивает новая информация. Его хорошая техника знать, но, как и все остальное, вам нужно быть осторожным, как вы ее используете.