Как сделать многозадачность в php - PullRequest
1 голос
/ 31 июля 2011

У меня есть синтаксический анализатор XML в php, который читает файл XML и вставляет содержимое в базу данных.Это делает это для одного файла.Но у меня есть сотни файлов, и ежедневно будут добавляться еще сотни.

  1. Итак, как мне выполнять многозадачность в php, чтобы я мог параллельно обрабатывать более 1 файла.
  2. Как сделать это более эффективно, многозадачность

Ответы [ 3 ]

2 голосов
/ 31 июля 2011

Вы можете использовать pcntl_fork(), это "классический" метод UNIX fork().Обратите внимание, что это работает только в системах UNIX / Linux и CGI / CLI SAPI.AFAIK * В PHP нет vfork(), поэтому он не очень эффективно использует память.

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

Я написал небольшое руководство по использованию pcntl_fork() некоторое время назад, вы можете использовать его в качестве отправной точкиесли хочешь.Есть и другие, используйте Google.

Или, вы можете просто запустить свой скрипт несколько раз в фоновом режиме ... В зависимости от вашего сценария это может быть проще ...

0 голосов
/ 13 октября 2013

вы можете использовать php gearman для многозадачности. Он предоставляет распределенную среду приложений для работы с несколькими машинами или процессами?Это позволяет приложениям выполнять задачи параллельно, обрабатывать балансировку нагрузки и вызывать функции между языками.Каркас может быть использован в различных приложениях.Gearman является многопоточным и, как известно, способен выполнять 50 тысяч заданий в секунду.просто посетите http://gearman.org/download

0 голосов
/ 31 июля 2011

http://www.php.net/manual/en/ref.pcntl.php - в комментариях много примеров

...