Вопрос о многопоточности CURL в PHP - PullRequest
1 голос
/ 23 июня 2010

У меня есть скрипт php, который сводится к следующему:

while ($arr = mysql_fetch_array($result))
{
   $url = $arr['url'];
   exec("curl $url > /dev/null &");
} 

$ url будет представлять удаленный скрипт.

Мой вопрос: чего мне ожидать, если я попытаюсь перебрать 2000 URL?

Будет ли открытие такого количества соединений CURL повреждать мой сервер?Могу ли я запустить все 2000 меньше, чем за одну минуту?

То, что я пытаюсь сделать, - это запретить пользователям настраивать cronjobs, открывая соединения и выполняя для них свои удаленные сценарии.

Можете ли вы, ребята, посоветовать?Я сегодня вне своей лиги.

Хадсон

Ответы [ 2 ]

3 голосов
/ 23 июня 2010

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

Я бы посоветовал вам запускать только 3-15 за раз, в зависимости от нагрузки, которую может обрабатывать сервер, и сложности сценариев. 2000 за один раз, вероятно, заставит вас исчерпать файловые дескрипторы или другие ограничения.

1 голос
/ 23 июня 2010

Вам необходимо следить за количеством открытых файлов (подключений), чтобы не превышать ограничение максимального числа файлов на вашем сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...