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?
-
I do not understand. Do you want to download something in your script, or offer something for download? Then I don't understand what you want to do with the timing– PekkaCommented Oct 28, 2010 at 18:44
-
2I think he wants his script to download 5 files in parallel.– middusCommented Oct 28, 2010 at 18:46
-
can you execute command line programs?– PekkaCommented Oct 28, 2010 at 18:51
-
@Pekka never mind timing. Yes I can execute but wont prefer any way– nerknCommented Oct 28, 2010 at 19:01
5 Answers
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/