Есть ли способ захватывать файлы с других серверов и выгружать их в асинхронные БД? - PullRequest
1 голос
/ 05 августа 2010

Мне нужно создать скрипт php, который принимает множество URL-адресов через POST, а затем загружает соответствующие файлы и выгружает их в БД.Дело в том, что я хотел бы сделать это асинхронно, чтобы, если у меня было 1000 файлов, скрипт не зависал до тех пор, пока все файлы не будут загружены.Кроме того, каждый раз, когда файл загружается, мне нужно знать, чтобы я мог вставить его в БД

. Любые идеи приветствуются.

Ответы [ 2 ]

1 голос
/ 05 августа 2010

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

Таким образом, в основном процессследующим образом:

Script1:

  • Получает POST
  • Вставляет в базу данных
  • Вызов сценария 2 с
  • shell_exec для запускав фоновом режиме

Script2:

  • Получить все URL-адреса из urls_to_download
  • Получить URL-адреса (последовательно или параллельно, зависит от вас)
  • Делайте вещи с ними
  • Сохраняйте их в базу данных.

И все готово.POST в script1 немедленно возвращается, и затем script2 выполняется.Все, что вам остается - это проверить статус (может быть опрос из базы данных через AJAX) для URL, если вы хотите показать некоторую информацию о прогрессе.

0 голосов
/ 05 августа 2010

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

Но вы можете использовать другой язык для выполнения этой задачи, например, JavaScript (который является асинхронным). Попробуйте node.js . Он молниеносен и имеет привязки mysql;) Используйте http.Client для отправки запросов на сайты.

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