Параллельная загрузка страниц с помощью PHP

Мне нужно отсканировать веб-сайт, где нужно получить несколько URL-адресов, а затем обработать их один за другим. Текущий процесс выглядит примерно так.

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

В этом процессе, я думаю, я теряю некоторое время на получение вторичного URL в начале каждой итерации. Поэтому я пытаюсь получить следующие URL параллельно с обработкой первой итерации.

Решение, на мой взгляд, заключается в том, чтобы из основного процесса вызвать PHP-скрипт, скажем, downloader, который загрузит все URL (с помощью curl_multi или wget) и сохранит их в некоторой базе данных.

Мои вопросы:

  • Как вызвать такой downloder асинхронно, я не хочу, чтобы мой основной скрипт ждал завершения работы downloder.
  • Какое-нибудь место для хранения загруженных данных, например, общая память. Конечно, кроме базы данных.
  • Есть ли вероятность, что данные будут повреждены при хранении и извлечении, как этого избежать?
  • Также, пожалуйста, подскажите мне, если у кого-то есть лучший план.
7
задан Yi Jiang 21 September 2012 в 10:59
поделиться