многопоточный сканер в PHP

Привет всем еще раз!

Нам нужна помощь, чтобы разработать и внедрить в наш сканер функциональность multi-curl. У нас огромный массивссылки для сканирования " и мы закидываем их с помощью Foreach.

Позволять's использовать псевдокод, чтобы понять логику:

    1) While ($links_to_be_scanned > 0).
    2) Foreach ($links_to_be_scanned as $link_to_be_scanned).
    3) Scan_the_link() and run some other functions.
    4) Extract the new links from the xdom.
    5) Push the new links into $links_to_be_scanned.
    5) Push the current link into $links_already_scanned.
    6) Remove the current link from $links_to_be_scanned.

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

Я понимаю что мынам нужно будет создать $ links_being_scanned или какую-то очередь.

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

Заранее спасибо! Крис;

Extended:

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

Даже после того, как muticurl, я в конечном итоге должен был бы найти способ выполнить все эти операции параллельно. Весь алгоритм, описанный ниже, должен работать параллельно.

Итак, теперь переосмысливая, мы должны были бы сделать что-то вроде этого:

  While (There's links to be scanned)
  Foreach ($Link_to_scann as $link)
  If (There's less than 10 scanners running)
  Launch_a_new_scanner($link)
  Remove the link from $links_to_be_scanned array
  Push the link into $links_on_queue array
  Endif;

И каждый сканер делает (это должно выполняться параллельно):

  Create an object with the given link
  Send a curl request to the given link
  Create a dom and an Xdom with the response body
  Perform other operations over the response body
  Remove the link from the $links_on_queue array
  Push the link into the $links_already_scanned array

Я предполагаю, что мы могли бы подойти к этому, создав новый файл PHP с алгоритмом сканера и используя pcntl_fork () для каждого параллельного процесса?

Поскольку даже используя multi-curl, мне в конечном итоге пришлось бы ждать зацикливания на регулярной структуре foreach для других процессов.

Я предполагаю, что мне нужно подойти к этому с помощью fsockopen или pcntl_fork.

Предложения, комментарии, частичные решения и даже "удачи" будет более чем оценено!

Большое спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос