2009-11-27 8 views
5

Próbuję przesłać dane z POST na mój serwer WWW, ale czasami cURL po prostu zatrzymuje się i powoduje, że PHP używa w nieskończoność 100% CPU.PHP Curl POST Problem Przyczyniający się do PHP 100% CPU

Używam poniższego kodu.

$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); 

Każdy wgląd w przyczyny i sposób śledzenia tego problemu byłby świetny.

+1

Jesteś pewien, że to tam się wisi? Na przykład, czy możesz wydrukować coś przed curl_exec i po curl_exec i nigdy nie zobaczysz drugiego wydruku? –

+1

Jakie dane są POSTING? Co zawiera skrypt odbierający dane? Który serwer zwleka, wysyłający lub wysyłający? –

+0

Przepuściłem ten kod około 15 razy na moim komputerze. Zmienna $ page jest powtarzana w porządku. – MeLight

Odpowiedz

-3

Aktualizacja do najnowszej wersji PHP, PHP 5.3.1.

Jeśli problem nadal występuje, a serwer jest uruchomiony system Windows, uaktualnić go do niczego innego, particularily formie * nix: dystrybucji GNU/Linux, BSD, postaci SunOS, itp ...

Jeśli problem nadal występuje, lub uważasz, że system Windows jest dobrym systemem operacyjnym dla serwerów [1], instrukcje śledzenia problemu i wysyłania raportu o błędzie są tutaj: http://bugs.php.net/how-to-report.php

[1] Microsoft sam musi zrestartować każda maszyna za microsoft.com co miesiąc.

+1

Zrzucenie systemu operacyjnego z powodu przypadkowego problemu z wykorzystaniem procesora jest szalony pomysł. PHP działa dobrze na Windowsie, o czym może świadczyć wiele osób. – jvenema

+0

Złożenie odpowiedzi, która zawiera odpowiedź na jego pytanie, również nie jest dobrą karmą: P To, co praktycznie zrobiłem, to powiedzieć mu, gdzie może być "błąd", jak to naprawić, i/lub jak to zgłosić – Flavius

+1

to nonsens. Windows nie jest moim pierwszym wyborem dla systemu operacyjnego serwera, ale istnieje wiele doskonale doskonałych stron PHP w PHP, które są hostowane w systemie Windows bez żadnych problemów.Sugestia "uaktualnienia" do * nix z powodu niezidentyfikowanego błędu jest głupia. –

0

Czy możesz określić, czy jest on powiązany z określonym plikiem? Być może jest coś związanego z kodowaniem lub przesyłaniem długości?

Moja pierwsza myśl to przynajmniej określenie, czy konkretny plik/zestaw plików powoduje problem; wypisz nazwy plików (i być może treść) i typy przed przesłaniem, a następnie nazwę pliku po jego zakończeniu. W ten sposób będziesz dokładnie wiedzieć, które pliki powodują problem, i możesz przejść od tego miejsca.

1

Jeśli naprawdę jest to rzeczywiste zawinięcie "połączenie", które zawiesza się i wykonuje 100% procesora, to jest to błąd curl i prawdopodobnie powinieneś rozważyć uaktualnienie libcurl.

+0

Czy istnieje sposób na aktualizację libcurl bez rekompilacji PHP? Używam Yuma do instalacji, więc kompilacja ze źródła zepsułaby wszystko inne. – DramaGirl

+0

Używam curl 7.12.1. – DramaGirl

+0

7.12.1 jest naprawdę STAROŻYTNY, więc naprawdę należy go ulepszyć. Powinieneś mieć możliwość aktualizacji bez rekompilacji, ale to zupełnie inny temat ... –

0

Być może problem dotyczy tego, co określasz jako dane do wpisu. Czy mógłbyś zrobić var_dump($postdata) tuż przed twoim wezwaniem do cURL i opublikować tutaj wyjście? cURL może zostać zawieszony na problemie typowania/serializacji, lub twoje dane postów są po prostu nieważne (i mam nadzieję, że możemy to poprawić!).