PHP% 100 CPU kullanımı mucip PHP Curl POST Sorunu

4 Cevap php

Benim sunucunuza POST ile veri yüklemek için çalışıyorum ama bazen cURL sadece tezgahları ve süresiz olarak% 100 CPU kullanımı PHP neden olur.

Ben aşağıdaki kodu kullanıyorum.

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $URL);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');
curl_setopt($curl, CURLOPT_HEADER, true);
$page = curl_exec($curl);
curl_close($curl);

Neden veya nasıl bu sorunu izlemek için ne herhangi bir fikir harika olurdu.

4 Cevap

Gerçekten kilitleniyor ve% 100 CPU gerçekleştirir gerçek kıvırmak "diyoruz" ise, o zaman bir kıvrılma hata ve muhtemelen libcurl yükseltmeyi düşünmelisiniz.

Belirli bir dosya ile ilgili eğer belirleyebilirsiniz? Belki de kodlama ile ilgili bir şey, ya da yükleme uzunluğu var mı?

Benim ilk düşünce dosyalar kümesini belirli bir dosya / soruna neden olup olmadığını en azından belirlemek olacaktır; dosya adlarını (ve belki de içeriği) ve yüklemeden önce türlerini ve bu tamamlandıktan sonra dosya adını yazmak. Eğer soruna neden tam olarak hangi dosyaların bileceksiniz, ve oradan hareket edebilirsiniz.

Belki de sorun, yazılan veri olarak belirterek konum ne olduğunu. Burada çıktı kıvrılmasını ve sonrası için aramadan önce var_dump($postdata) hakkını yapabilir miyiz? Curl bir tiplemeleri / serileştirme konuda kafayı almak olabilir, ya da post verileri basitçe geçersiz (ve umarım bunu düzeltmek olabilir!) 'dir.

PHP, PHP 5.3.1 yeni sürümüne yükseltin.

Sorun hala devam ve sunucu Windows çalıştıran ise, başka bir şey için yükseltmek, * Nix Particularily bir form: Bir GNU / Linux dağıtımı, vb BSD, sunOS biçimidir ..

Sorun o zaman bile devam ederse, ya da Windows sunucuları için iyi bir işletim sistemi olduğunu düşünüyorum [1], sorunu izlemek ve bir hata raporu göndermek için talimatlar burada bitti: http://bugs.php.net/how-to-report.php

[1] Microsoft kendisi her ay microsoft.com arkasında her makineyi yeniden başlatmak için vardır.