Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menetapkan curl tidak tamat masa dalam php? Analisis ringkas beberapa kaedah
Dalam PHP, curl ialah perpustakaan yang berkuasa untuk menghantar permintaan HTTP. Walau bagaimanapun, secara lalai, permintaan curl akan menetapkan tamat masa selepas permintaan itu akan dibatalkan. Masa ini lalai kepada 1 saat. Walau bagaimanapun, dalam beberapa kes, kami mungkin mahu permintaan curl diteruskan dalam tempoh masa yang lebih lama dan bukannya membatalkan dalam tamat masa lalai. Bagaimana untuk menetapkan masa tamat permintaan curl melalui kod PHP? Berikut adalah beberapa cara:
Jika anda mempunyai kebenaran untuk mengakses fail php.ini, anda boleh mengubah suai dalam fail ini Ubah suai tamat masa curl dalam . Dalam fail php.ini, cari dua pilihan berikut:
; Maximum amount of time (in seconds) that is allowed for cURL functions to execute. ; Note: This value should not be set to an excessive amount, as it will negatively ; affect server performance. ; Default Value: 30 curl_timeout = 30 ; The number of seconds to wait while trying to connect. ; Default Value: 60 curl_connect_timeout = 60
Di mana, curl_timeout
ialah masa pelaksanaan maksimum permintaan curl dan curl_connect_timeout
ialah tamat masa sambungan permintaan curl. Anda perlu menukar nilai mereka kepada masa yang anda inginkan dalam beberapa saat. Selepas pengubahsuaian selesai, mulakan semula perkhidmatan Apache atau PHP-FPM untuk menjadikannya berkesan.
Jika anda tidak mempunyai kebenaran untuk mengubah suai fail php.ini, anda boleh menggunakan fungsi curl_setopt dalam Kod PHP untuk menetapkan tamat masa curl . Fungsi ini digunakan untuk menetapkan pilihan curl Ia digunakan seperti berikut:
bool curl_setopt ( resource $ch , int $option , mixed $value )
di mana, $ch
ialah pemegang curl (biasanya dimulakan menggunakan fungsi curl_init), $option
ialah pilihan yang perlu ditetapkan, $value
ialah nilai pilihan. Terdapat dua pilihan untuk ditetapkan untuk tamat masa:
CURLOPT_TIMEOUT:curl 请求最大执行时间(以秒为单位); CURLOPT_CONNECTTIMEOUT:curl 请求连接超时时间(以秒为单位)。
Anda boleh menggunakan kod berikut untuk menetapkan pilihan di atas:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://example.com"); curl_setopt($ch, CURLOPT_TIMEOUT, 120); // 设置 curl 请求最大执行时间为 120 秒(2 分钟) curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); // 设置 curl 请求连接超时时间为 30 秒 $result = curl_exec($ch); curl_close($ch);
Dalam kod di atas, kami menetapkan curl Maksimum masa pelaksanaan untuk permintaan ialah 120 saat dan tamat masa sambungan ialah 30 saat. Jika permintaan curl tidak selesai dalam masa 120 saat atau sambungan tidak berjaya diwujudkan dalam masa 30 saat, permintaan akan dibatalkan.
Jika anda tidak mahu mengubah suai konfigurasi PHP atau menggunakan fungsi curl_setopt, anda juga boleh menambah parameter ke URL untuk menetapkan curl Tamat masa permintaan. Operasi khusus adalah seperti berikut:
http://example.com/?curl_timeout=120&curl_connect_timeout=30
Dalam URL di atas, kami menambahkan parameter curl_timeout
dan curl_connect_timeout
pada parameter permintaan untuk menetapkan tamat masa permintaan curl. curl secara automatik membaca parameter ini dan menggunakan nilainya apabila membuat permintaan. Kaedah ini agak mudah, tetapi terdapat kelemahan: parameter yang terkandung dalam URL mungkin dipintas atau diubah suai oleh penyemak imbas atau pelayan proksi terbalik.
Ringkasan
Dengan mengubah suai fail php.ini atau menggunakan fungsi curl_setopt atau menambah parameter dalam URL, kami boleh menetapkan tamat masa untuk permintaan curl dalam PHP. Apabila menggunakan curl, anda perlu menetapkan masa tamat secara munasabah mengikut situasi tertentu Jangan tetapkan tamat masa terlalu lama untuk mengelakkan menjejaskan prestasi pelayan.
Atas ialah kandungan terperinci Bagaimana untuk menetapkan curl tidak tamat masa dalam php? Analisis ringkas beberapa kaedah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!