php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.07.2009, 16:44  
Benutzer
 
Registriert seit: 15.07.2009
Beiträge: 35
PHP-Kenntnisse:
Fortgeschritten
unsource befindet sich auf einem aufstrebenden Ast
Standard curl und Timeout unter 800ms

Guten Tag zusammen,
Ich bin gerade am testen von curl mit mehreren 100 legalen Abfragen.

Ein Ausschnitt:
PHP-Code:
      $ch curl_init();
      
curl_setopt($chCURLOPT_URL255.255.255.255);
      
curl_setopt($chCURLOPT_HEADERtrue);
      
curl_setopt($chCURLOPT_NOBODYfalse);
      
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
      
curl_setopt($chCURLOPT_CONNECTTIMEOUT1);
      
curl_setopt($chCURLOPT_TIMEOUT_MS0800);    
      
$data curl_exec($ch);
      
$string curl_multi_getcontent($ch);
      
curl_close($ch); 
da mir curl bei einem Timeout unter 1000ms bei angestrebten 200ms nur durchgerasselt ist, habe ich durch testen gemerkt, das es bei unter 800ms ein Wert von 0ms real ist.

Gibt es eine Möglichkeit, den Timeout unter 800ms zu bekommen?
unsource ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.07.2009, 17:15  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

0800 wird von php OKTAL interpretiert
und da bei oktal die 8 nicht erlaubt ist, wird das wohl zu einer 0 daher die 0ms

warum nimmst du nicht 800 ?
robo47 ist offline   Mit Zitat antworten
Alt 15.07.2009, 17:32  
Benutzer
 
Registriert seit: 15.07.2009
Beiträge: 35
PHP-Kenntnisse:
Fortgeschritten
unsource befindet sich auf einem aufstrebenden Ast
Standard

ob ich 0800 oder 800 nehme ist sogar egal xD
ich kam irgendwie dadrauf, da es mit einer 0 vorne bei 900ms funktioniert habe. werde ich wieder umändern. trozdem habe ich das problem mit dem timeout.

EDIT:
0800 funktioniert jedoch möchte ich 250ms haben
__________________
Mit freundlichen Grüßen unsource
unsource ist offline   Mit Zitat antworten
Alt 15.07.2009, 19:17  
yab
Erfahrener Benutzer
 
Registriert seit: 05.04.2009
Beiträge: 291
PHP-Kenntnisse:
Anfänger
yab befindet sich auf einem aufstrebenden Ast
Standard

PHP: curl_setopt - Manual

Zitat:
CURLOPT_TIMEOUT_MS The maximum number of milliseconds to allow cURL functions to execute. Added in cURL 7.16.2. Available since PHP 5.2.3.
Passt deine CURL- und PHP-Version?
yab ist offline   Mit Zitat antworten
Alt 15.07.2009, 19:31  
Benutzer
 
Registriert seit: 15.07.2009
Beiträge: 35
PHP-Kenntnisse:
Fortgeschritten
unsource befindet sich auf einem aufstrebenden Ast
Standard

php 5.3
curl 7.16.4
opensuse 64bit
__________________
Mit freundlichen Grüßen unsource
unsource ist offline   Mit Zitat antworten
Alt 15.07.2009, 19:39  
yab
Erfahrener Benutzer
 
Registriert seit: 05.04.2009
Beiträge: 291
PHP-Kenntnisse:
Anfänger
yab befindet sich auf einem aufstrebenden Ast
Standard

Ok, dann passt das ja.
Aber irgendwie sieht ein multi-Handle anders aus, zumindest laut Handbuch:
PHP: curl_multi_init - Manual
yab ist offline   Mit Zitat antworten
Alt 15.07.2009, 19:52  
Benutzer
 
Registriert seit: 15.07.2009
Beiträge: 35
PHP-Kenntnisse:
Fortgeschritten
unsource befindet sich auf einem aufstrebenden Ast
Standard

ich habe curl in einer for-schleife, welche die ip's durchgeht
danke für den Hinweis, ich denke mal das die Performance die 550ms unterschied pro abfrage nicht durch Multi-Handle entschieden wird.
Werde ich mir merken.

Wenn es gar nicht möglich ist, werde ich wohl mit mehreren Scripten arbeiten.
__________________
Mit freundlichen Grüßen unsource
unsource ist offline   Mit Zitat antworten
Alt 15.07.2009, 20:17  
yab
Erfahrener Benutzer
 
Registriert seit: 05.04.2009
Beiträge: 291
PHP-Kenntnisse:
Anfänger
yab befindet sich auf einem aufstrebenden Ast
Standard

So, ich habs jetzt mal mit nachvollziehbarem Code getestet.
PHP-Code:
 
$timeout 
1000;
$ch curl_init();
curl_setopt($chCURLOPT_URL'http://www.google.de');
curl_setopt($chCURLOPT_HEADERtrue);
curl_setopt($chCURLOPT_NOBODYfalse);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_CONNECTTIMEOUT1);
curl_setopt($chCURLOPT_TIMEOUT_MS$timeout);
if(
false === $response curl_exec($ch))
{
 
$Error curl_errno($ch).' - '.curl_error($ch);
 throw new 
Exception('Request failed: '.$Error);
}
 
echo 
'<pre>'.print_r(curl_getinfo($ch), true).'</pre>';
echo 
htmlspecialchars($response);
curl_close($ch); 
Bei $timeout = 1000; (>= 1000) funktioniert es. Das Infoarray besagt, dass die Gesamtzeit 0.210293 s Betrug.
Code:
Array
(
    [url] => http://www.google.de
    [content_type] => text/html; charset=ISO-8859-1
    [http_code] => 200
    [header_size] => 341
    [request_size] => 52
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.210293
    [namelookup_time] => 0.008783
    [connect_time] => 0.0657
    [pretransfer_time] => 0.065723
    [size_upload] => 0
    [size_download] => 6965
    [speed_download] => 33120
    [speed_upload] => 0
    [download_content_length] => 0
    [upload_content_length] => 0
    [starttransfer_time] => 0.155424
    [redirect_time] => 0
)
Wenn jetzt $Timeout auf <= 1000 gesetzt wird (z.B. 999), wird eine Exception geschmissen.
Code:
Fatal error: Uncaught exception 'Exception' with message 'Request failed: 28 - Timeout was reached'
Hier wird das Problem auch beschrieben: http://coding.derkeiler.com/Archive/.../msg01582.html

Also für mich sieht das nach einen BUG aus. Wo kann man den melden, ist ja die PECL-Erweiterung. Oder hat jemand anderes eine Idee, woran es liegt bzw. kann mal den Codeschippsel testen?
yab ist offline   Mit Zitat antworten
Alt 15.07.2009, 20:43  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

curl ist kein pecl-Modul.
wenn dann müsste das hierher
-> PHP Bugs

Aber hier ist ein newsgroup-eintrag was ich grad via google gefunden hab, scheint also eher ein CURL-basiertes problem zu sein und damit ausserhalb des bereiches von php.

Curl: Re: Using CURLOPT_TIMEOUT_MS correctly?

Workaround wäre also curl selbst passend kompilieren und dann php mit dem passenden curl zusammen kompilieren.

wäre einen versuch wert.
robo47 ist offline   Mit Zitat antworten
Alt 15.07.2009, 21:10  
yab
Erfahrener Benutzer
 
Registriert seit: 05.04.2009
Beiträge: 291
PHP-Kenntnisse:
Anfänger
yab befindet sich auf einem aufstrebenden Ast
Standard

Ja, das ist es, robo47.
PHP-Code:
curl_setopt($chCURLOPT_NOSIGNALtrue); 
War schon ausreichend.
yab ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Curl Seite "A" kann geladen werden Seite "B" nicht warum? CoolFire PHP Tipps 2009 3 10.06.2009 20:15
Firefox startet Script bei Timeout wieder neu Wolla PHP Tipps 2009 2 18.05.2009 18:07
SoapClient: Timeout bei Methodenaufruf robbash PHP Tipps 2009 1 24.04.2009 13:48
[Erledigt] curl post GTA26 PHP Tipps 2009 1 11.03.2009 20:09
Curl mit Server-IP fettyteddy PHP-Fortgeschrittene 1 10.03.2009 21:01
[Erledigt] cURL abstellen? spikytux Trash 7 23.02.2009 17:35
Curl mehrere URLs öffnen in einer Curl Session. Buschdieb PHP Tipps 2008 8 20.12.2008 13:01
CURL funktieonieren nicht bazik PHP-Fortgeschrittene 12 07.11.2008 09:43
fsockopen mit https ohne curl und openssl loom613 PHP-Fortgeschrittene 13 25.10.2008 03:17
nuSOAP SSL und cURL Typhon PHP Tipps 2008 0 24.10.2008 15:10
fsockopen - timeout funktioniert nicht! PHP Tipps 2007 3 23.01.2006 23:46
Zufalls IP per Curl mitgeben Flor1an PHP Tipps 2005 4 04.05.2005 22:38
timeout problöme ... PHP Tipps 2005 5 20.01.2005 17:17
[Erledigt] PHP nachträglich mit CURL Support ausstatten PHP-Fortgeschrittene 2 20.12.2004 16:19
cURL: Webseite einlesen PHP Tipps 2004 1 14.07.2004 00:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
curl timeout, php curl timeout, curl testen, curl timeout abfangen, curl php timeout, curl timeout php, curl_setopt timeout, php curl timeout abfangen, curl timeout millisekunden, curlopt timeout, php timeout abfangen, php curl timeout funktioniert nicht, curl timeout bash, bash timeout milliseconds, php curl timeout ms, php version 7.16.2, zend curl timeout, curl timeout milliseconds, php curlopt_timeout_ms, fsockopen timeout milliseconds

Alle Zeitangaben in WEZ +1. Es ist jetzt 13:56 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum