Есть ли у PHP контроль за работой, как у bash? - PullRequest
0 голосов
/ 19 апреля 2010

поддерживает ли PHP что-то вроде амперсанда в bash (разветвление)? Допустим, я хотел использовать cURL на двух веб-страницах одновременно, поэтому сценарию не нужно ждать, пока не закончится первая команда cURL, как можно достичь этого в PHP? Примерно так в bash:

 curl www.google.com &
 curl www.yahoo.com &
 wait

Ответы [ 4 ]

1 голос
/ 19 апреля 2010

Вы можете использовать popen или proc_open, чтобы открыть процесс и запустить его в фоновом режиме, но нет языковой поддержки для фоновых операций, как для bash (в любом случае он был создан для запуска задач; PHP был создан для сценариев).

Используя proc_open, вы можете использовать proc_get_status, чтобы узнать, когда процессы завершены. Боюсь, что нет wait эквивалента.

1 голос
/ 19 апреля 2010

Поддерживает ли PHP что-то вроде амперсанда в bash (разветвление)?
Нет. См. Другие ответы, хотя я отмечаю, что расширение PCNTL предназначено только для UNIX.

... как можно достичь этого в PHP? *
cURL поддерживает одновременный запуск нескольких загрузок .

0 голосов
/ 21 апреля 2010

Какой-то механизм очередей часто предпочтительнее. Gearman - это механизм организации очередей с открытым исходным кодом, который вы можете использовать. У меня также есть запись в блоге в очереди заданий Zend Server, в которой говорится о асинхронном выполнении задач Есть ли у вас очередь? Введение в очередь заданий Zend Server .

Вы также можете использовать что-то вроде классов очереди Zend Framework для реализации некоторой асинхронной работы. Zend_Queue

0 голосов
/ 19 апреля 2010

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

...