Я пытаюсь сделать вариант file_get_content НО, не дожидаясь содержимого. В основном я запрашиваю другой php-скрипт в другом URL-адресе, который будет загружать большой файл, поэтому я не хочу ждать завершения загрузки файла. У кого-нибудь есть идея?
Спасибо!
Я бы предложил проверить либо функцию popen , либо функцию curl multi .
Самый простой способ – сделать:
$fh = popen("php /path/to/my/script.php"); // Do other stuff // Wait for script to finish while (fgets($fh) !== false) {} // Close the file handle pclose($fh);
Если вы не хотите дождаться завершения этого:
exec("php /path/to/my/script.php >> /dev/null &");
или
exec("wget http//www.example.com/myscript.php");
Попробуйте это в скрипте, который будет загружать этот файл:
//Erase the output buffer ob_end_clean(); //Tell the browser that the connection's closed header("Connection: close"); //Ignore the user's abort. ignore_user_abort(true); //Extend time limit to 30 minutes set_time_limit(1800); //Extend memory limit to 10MB ini_set("memory_limit","10M"); //Start output buffering again ob_start(); //Tell the browser we're serious... there's really //nothing else to receive from this page. header("Content-Length: 0"); //Send the output buffer and turn output buffering off. ob_end_flush(); //Yes... flush again. flush(); //Close the session. session_write_close(); // Download script goes here !!!
похищен с: http://andrewensley.com/2009/06/php-redirect-and-continue-without-abort/
Я успешно использовал curl_post_async
из этой curl_post_async
.
Как сделать асинхронный запрос GET в PHP?