Вам дали ответ, но вот у меня был опыт изготовления именно этой функции, задание на скачивание URL, его обработку и выдачу данных в аккаунт. Решил это так немогу конкретный код сейчас привести, но суть такова:
Скрипт получая все параметры
1. вставляет все данные в MySQL со статусом «Ожидает», получает id
2. скрипт скрипт лочит файл .lock(php ждет если он в данный момент залочен)
3. открывает файл urls пишет туда ID:URL (ID это который от базы получили) в режиме APPEND
4. снимает лок с файла
5. выдает статус «ID: Ожидается» во фронтэнд
6. завершает свою работу.
По крону каждые 3 секунды запускается bash скрипт который:
1. лочит файл .lock
2. читает файл urls, отрезает оттуда 10 урлов, остальные складывает обратно в файл
3. снимает лок.
4. С помощью lynx качается урл, и сразу скидывается на диск (есть ключ для lynx, хотя вы можете закачать wget, смотря какая у вас задача).
По крону каждые 10 секунд, запускается PHP скрипт который:
1. открывает папку и получает её листинг
2. выбираются все задания, статус которых «ожидается»
3. 30 записей из них помечаются статусом «обработка»
4. 30 этих файлов обрабатываются, результат по ID(из имени файла) присваивает статус в MySQL «готово», туда же вставляются все данные, которые были получены при обработке
5. скрипт завершается, удаляя все обработаные файлы.
Ajax скрипт периодически узнает не готовы ли файлы которые в очереди.