I want to download (or simply file_get_contents) for 5 places. I wait say 1.2 sec for each that means in total 1.2X5=6 seconds. I want to save waiting time. I thought I could wait 1.3 sec is enough. How can I approach?
You can use the curl_multi_* functions to achieve parallel downloads.
this is possible but only by creating multiple threads outside PHP
With PHP scripts run in a single thread, meaning that it can only do 1 task at a time, the only way you can do this with PHP is by creating / using an external application installed / placed on your server and using exec to do this and waiting for a response from the exec, or using the fork_* functions to be able to dip and dive in and out of threads.
To get you started you can run the downloads in parallel by forking them into the background using php's popen: http://www.php.net/manual/en/function.popen.php
The curl_multi
functions can be used for this purpose. Sample code is available in this repository.
https://github.com/amirreza-noori/PHP-multi-connection-downloader/
http://code.google.com/p/multicurl-library/
btw. you're looking for non blocking connections.
© 2022 - 2024 — McMap. All rights reserved.