8

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?

4
  • 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
    – Pekka
    Commented Oct 28, 2010 at 18:44
  • 2
    I think he wants his script to download 5 files in parallel.
    – middus
    Commented Oct 28, 2010 at 18:46
  • can you execute command line programs?
    – Pekka
    Commented Oct 28, 2010 at 18:51
  • @Pekka never mind timing. Yes I can execute but wont prefer any way
    – nerkn
    Commented Oct 28, 2010 at 19:01

5 Answers 5

8

You can use the curl_multi_* functions to achieve parallel downloads.

2

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.

1

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

1

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/

0

http://code.google.com/p/multicurl-library/

btw. you're looking for non blocking connections.

Not the answer you're looking for? Browse other questions tagged or ask your own question.