ajax multi-threaded

Может ли использовать ajax для достижения истинного многопоточного? Если может, как это сделать? пожалуйста, дайте мне некоторую связанную информацию, веб-сайт или книги. спасибо ~!

Это зависит от того, что вы подразумеваете под «многопоточным».

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

На сервере каждый запрос Ajax представляет собой отдельный HTTP-запрос. Каждый из них будет выполняться в своем потоке. В зависимости от конфигурации веб-сервера они могут даже не выполняться на одном компьютере. Но каждый экземпляр скрипта PHP будет полностью отдельным, даже если вы вызываете один и тот же скрипт. Не существует общего состояния как такового.

В настоящее время браузеры обычно ограничивают количество одновременных запросов Ajax, которые страница может создавать на основе каждого узла. Это число, как правило, 2. Я считаю, вы можете изменить его, но поскольку большинство людей будет иметь значение по умолчанию, вы должны предположить, что это будет 2. Больше запросов, чем это будет очереди, пока не будет выполнен существующий запрос. Это может привести к необходимости раздражать такие вещи, как создание нескольких имен узлов, таких как req1.example.com, req2.example.com и т. Д.

Единственное исключение – сеансы, но они не многопоточны. Запуск сеанса блокирует все другие скрипты, пытающиеся запустить тот же сеанс (на основе cookie). Это одна из причин, по которой вам необходимо минимизировать время, в течение которого открыт сеанс. Возможно, вы могли бы использовать базу данных или что-то вроде memcache для взаимодействия между скриптами kludge, но на самом деле это не то, о чем говорит PHP.

PHP лучше всего подходит для простой обработки запросов. Запрос получен. Он обрабатывается и возвращается ответ. Этот ответ может быть HTML, XML, текст, JSON или что-то еще. Запрос может быть HTTP-запросом в браузере или запросом AJAX.

Каждый из этих циклов запроса-ответа должен, по возможности, рассматриваться как отдельные объекты.

Другой метод – длительный опрос. HTTP-запрос отправляется на сервер и может не возвращаться в течение длительного времени. Это используется для веб-чатов и других сценариев типа «серверный push». Иногда частичные ответы будут размыты без завершения запроса.

Последний вариант (по крайней мере, Unix / Linux) заключается в том, что PHP может порождать процессы, но это не похоже на то, о чем вы говорите.

Итак, что именно вы пытаетесь сделать?

Вы не можете на самом деле многопоточно, но то, что делают большие веб-сайты, – это очистить вывод страницы, а затем использовать Ajax для загрузки дополнительных компонентов «на лету», чтобы пользователь мог видеть контент, даже когда браузер все еще запрашивает новую информацию. Его хорошая техника знать, но, как и все остальное, вам нужно быть осторожным, как вы ее используете.