Show http. //php. net/thủ công/vi/chức năng. curl-setopt. php CURLOPT_CONNECTTIMEOUT_MSMôi trường. CentOS6 với PHP5. 6 Cài đặt cURL # cd /var/tmp # git clone https://github.com/bagder/curl.git # cd curl # ./buildconf # ./configure --enable-threaded-resolver # make # make install # ./src/curl -V curl 7.45.0-DEV (x86_64-unknown-linux-gnu) libcurl/7.45.0-DEV OpenSSL/1.0.1e zlib/1.2.3 libidn/1.18 Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile NTLM NTLM_WB SSL libz UnixSocketsĐặt ldconfig # echo '/usr/local/lib' > /etc/ld.so.conf.d/custom-libs.conf # ldconfig # ldconfig -p | grep curl libcurl.so.4 (libc6,x86-64) => /usr/local/lib/libcurl.so.4 libcurl.so.4 (libc6,x86-64) => /usr/lib64/libcurl.so.4 libcurl.so (libc6,x86-64) => /usr/local/lib/libcurl.so libcurl.so (libc6,x86-64) => /usr/lib64/libcurl.soPhiên bản PHP # yum update --skip-broken --disablerepo=base,updates --enablerepo=remi --enablerepo=remi-php56 phpCài đặt lại php-common # yum reinstall --skip-broken --disablerepo=base,updates --enablerepo=remi --enablerepo=remi-php56 php-common # php -i | grep cURL cURL support => enabled cURL Information => 7.45.0-DEVTạo kịch bản thử nghiệm # vim curl_test.php <?php $url = 'http://www.yahoo.co.jp/'; echo $url . "\n"; $option = array( CURLOPT_CONNECTTIMEOUT_MS => 500, CURLOPT_TIMEOUT => 500, CURLOPT_HEADER => FALSE, CURLOPT_FAILONERROR => TRUE, CURLOPT_RETURNTRANSFER => TRUE ); if (!$ch = curl_init()) { error_log('[error] curl_init'); exit; } try { if (!curl_setopt_array($ch, $option)) { throw new Exception('[error] curl_setopt'); } if (!$result = curl_exec($ch)) { throw new Exception('[error] curl_exec'); } curl_close($ch); echo $result; } catch (Exception $e) { curl_close($ch); error_log($e->getMessage()); }Chạy tập lệnh thử nghiệm. # php curl_test.php Bức ảnh đẹp nhất từ Francisco Gonzalez Snow Curl Thời gian chờ của cURL kiểm soát số giây hoặc mili giây mà một kết nối sẽ sẵn sàng để truyền dữ liệu. Thời gian chờ mặc định cho cURL là 0, điều đó có nghĩa là cURL sẽ không đóng kết nối trong khi truyền dữ liệu. Ở đây, bạn nên nhớ rằng mặc dù thời gian chờ mặc định là 0 nhưng PHP cũng áp đặt giới hạn thời gian cho việc thực thi tập lệnh, mặc định là 30 giây. Vì vậy, nếu quá trình truyền cURL mất hơn 30 giây, PHP sẽ buộc đóng hoàn toàn quá trình thực thi tập lệnh. Nếu cURL cần thêm thời gian để hoàn thành tác vụ, hãy cân nhắc đặt set_time_limit(0) ở đầu tập lệnh PHPHết thời gian cURL PHP//set_time_limit(0); //If cURL requried more that 30 seconds, 0 mean no Timeout Limit. Limit is set in seconds. $ch= curl_init(); curl_setopt($ch, CURLOPT_URL,"https://www.tutorialjinni.com/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30);// TIMEOUT IN SECONDS //curl_setopt($ch, CURLOPT_TIMEOUT_MS, 30);// TIMEOUT IN MILLISECONDS $data=curl_exec($ch); curl_close($ch); echo $data Ví dụ về thời gian chờ cURL Shellcurl --connect-timeout 20 "https://www.tutorialjinni.com" Tôi sẽ đề nghị cố gắng cô lập vấn đề. Ví dụ: giả sử rằng máy chủ bạn đang cố truy cập nằm trên GCE và ứng dụng PHP của bạn nằm ngoài GCP, Bạn có thể chạy song song ứng dụng trên GCE và so sánh kết quả. Bằng cách đó, bạn loại bỏ các phần tử mạng bên ngoài Google Bạn cũng có thể muốn kiểm tra để đảm bảo rằng bạn không dùng hết tài nguyên trong máy nơi ứng dụng PHP đang chạy hoặc máy đang phục vụ các yêu cầu Cuối cùng, để loại bỏ rằng đó không phải là vấn đề liên quan đến cấu hình PHP của bạn, bạn cũng có thể thử đăng nhập và cuộn qua tập lệnh Linux. Sau đó, bạn có thể so sánh kết quả. Nhân tiện, bạn có thể tìm thấy ở đây một cuộc thảo luận về thời gian chờ cuộn tròn PHP Đây là một hướng dẫn ngắn về cách sử dụng các tùy chọn thời gian chờ cURL trong PHP. Trong một số trường hợp nhất định, bạn có thể muốn chỉ định thời gian chờ để ngăn yêu cầu HTTP của mình mất quá nhiều thời gian Có hai tùy chọn thời gian chờ cURL mà bạn cần biết. Các tùy chọn này hơi khác nhau, vì vậy tôi sẽ giải thích chúng ngay bây giờ
Hãy xem đoạn mã sau ________số 8_______Trong đoạn mã trên, tôi đặt CURLOPT_CONNECTTIMEOUT thành 10 giây và tôi đặt CURLOPT_TIMEOUT thành 30 giây. Điều này có nghĩa là
Kiểm tra thời gian chờ của cURLĐể kiểm tra điều này, tôi đã thêm một số xử lý lỗi cURL cơ bản vào cuối tập lệnh của mình để mọi lỗi cURL sẽ dẫn đến một ngoại lệ bị ném. URL cục bộ mà tôi đang gửi yêu cầu HTTP để sử dụng chức năng ngủ của PHP để tạo độ trễ 40 giây (cao hơn giới hạn 30 giây mà chúng tôi đã đặt với CURLOPT_TIMEOUT). Kết quả là, ngoại lệ sau đã được đưa ra
|