php ja socketi avatud aja kontrollimine (curl)

Nagu teada on php execute time limit ei suuda kontrollida kaua avatud socketis aega kulutatakse.

Hea võimalus ka see aeg kontrolli all hoida on kasutada PHP cURL funktsionaalsust. Ma ei hakka pikalt siin erinevadi võimalusi lahti kirjutama, täpsemaks uurimiseks on alati php manuaalida – pigem spikker endale.

Testimiseks lõin 1G faili


dd if=/dev/zero of=rand.txt bs=1M count=1024

php script

2 // Margusja's curl testscript
3
4 // create a new cURL resource
5 $ch = curl_init();
6 curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 1 ); // the maximum amount of time a socket spends on trying to connect to a host
7 curl_setopt( $ch, CURLOPT_TIMEOUT, 10 ); // the maximum amount of time a curl operation can execute for
8
9
10 // set URL and other appropriate options
11 curl_setopt($ch, CURLOPT_URL, "http://ftp.margusja.pri.ee/rand.txt");
12 curl_setopt($ch, CURLOPT_HEADER, false);
13
14 // grab URL and pass it to the browser
15 curl_exec($ch);
16
17 // close cURL resource, and free up system resources
18 curl_close($ch);

Ja tulemused erinevate väärtustega CURLOPT_TIMEOUT muutujale.
CURLOPT_TIMEOUT = 5;

[08:47:01 margusja@arendus arendus]$ time php ./curltest.php

real 0m5.063s
user 0m0.041s
sys 0m0.024s

CURLOPT_TIMEOUT = 10;

[08:47:08 margusja@arendus arendus]$ time php ./curltest.php

real 0m10.062s
user 0m0.053s
sys 0m0.096s

directadmin and how to build new php wiht new options

I needed to enable php-soap in directadmin build php.

Locate your php config file:

cd /usr/local/directadmin/custombuild
./build used_configs

Edit your php5 config file: (example)
vim /usr/local/directadmin/custombuild/custom/suphp/configure.php5

Add: (Note that only the last rule has no slash!)
–enable-soap

Save the file and rebuild PHP:
./build php all