| Многозадачность в PHP
Сложилось общее мнение, что из-за отсутствия в PHP потоков, как в C++ или Java, PHP не является многозадачным языком. Грубо говоря нельзя исполнять несколько команд одновременно. В результате многие разработчики выходили из положения с помощью эмуляции в виде асинхронных сокетов(Asynchronous Sockets) или мультикурл (curl_multi_init), некоторые использовали библиотеку pcntl_fork которая не входит в стандартную сборку PHP. Да, PHP не поддерживает обработку потоков, но он может быть многозадачным.
Чем плохо способы с сокетами или curl? Представьте, что у вас высоко нагруженный сервер, вы запускаете скрипт и он начинает загружать вебсервер еще сильнее. Вы обращаетесь сначала к серверу, тот запускает PHP обработчик, который и исполняет скрипт. Подумайте, не лучше ли исключить вебсервер из исполнения?
В PHP 5ой версии появились функции stream_select и proc_open, которые позволяют создавать и опрашивать потоки наподобие сокетов, но исполняя программу локально.
Надо сразу оговориться что для основной программы и потока понадобятся разные файлы.
Как вы видите мы не обращаемся к веб серверу, это позволяет экономить процессорное время, что соответственно увеличивает производительность.
Всегда ваш,
Александр 7ion. Создан Administrator(2010-05-10 12:56:56) |
|
|||||
Copyright Alexander Semion(Spin7ion)© | |||||||