php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.06.2005, 20:25  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard CURL Traffic begrenzen ?

Hmm so jetzt frag ich doch mal :P
Gibt es hier für CURL ne Möglichkeit den Traffic zu limitieren? sprich die Datei nur maximal 100kb oder so zu laden?
hab hier:
http://www.php.net/manual/en/function.curl-setopt.php
nur CURLOPT_BUFFERSIZE gefunden und dachte damit könnte ich eben diese Größe bestimmen, aber selbst wenn ich das auf 12 setze, wird mir trotzdem eine 3xxx bytes große Seite geladen.

Hier mal der momentane Auszug einer Methode einer Klasse an der ich gerade sitze:

PHP-Code:
<?php
    
private function GetUrlContent($Url)
    {
        
$curl curl_init();
        
$this->_AddDebugInfo('<span style="color: black;">CURL Verbindung initialisiert ('.$Url.')</span>');
        
// Die Url natürlich
        
curl_setopt($curlCURLOPT_URL$Url);
        
// Selbe Datei Als Referrer
        
curl_setopt($curlCURLOPT_REFERER$Url);
        
// Keine Ausgabe sondern ein Return :P
        
curl_setopt($curlCURLOPT_RETURNTRANSFER1);
        
// Timeout der Verbindung
        
curl_setopt($curlCURLOPT_CONNECTTIMEOUT$this->CurlTimeOut);
        
// header('Location: ...'); folgen ...
        
curl_setopt($curlCURLOPT_FOLLOWLOCATION1);

        
// Puffer begrenzen
        
curl_setopt($curlCURLOPT_BUFFERSIZE12); // Das hier Dachte ich sollte die gewünschte funktion leisten
        
        // Begrenzung um nicht im Kreis zu wandern ...
        
curl_setopt($curlCURLOPT_MAXREDIRS10);
        
// Speziellen UserAgent angeben
        
if (!empty($this->CurlUserAgent))
        {
            
curl_setopt($curlCURLOPT_USERAGENT$Url); // IE oder FF als Browser angeben
        
}
        
// Aktion starten
        
$this->_CurrentUrlContent curl_exec($curl);
        
$this->_AddDebugInfo('<span style="color: green;">CURL Verbindung aufgebaut ('.$Url.')</span>');
        
curl_close($curl);
        
$this->_AddDebugInfo('<span style="color: black;">CURL Verbindung geschlossen ('.$Url.')</span>');

        echo 
$this->_CurrentUrlContent;
    }
?>
weil mir kein Workaround einfällt das verlässlich wäre, ein nicht wirklich guter Weg wäre ein vorheriges Abfrage des Content-Length-Headers, aber da der nicht immer gesendet wird, ist es keine wirkliche Lösung des Problems.

mfg
robo47
robo47 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.06.2005, 20:32  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Also ich tippe mal, dass das eher ein Puffer ist, der bestimmt, wie viele Bytes gespeichert werden, bis sie verarbeitet werden müssen. 12 erscheint etwas klein... wird's sehr langsam?
Da Curl ja nur http macht, wirst Du es nicht beschränken können. Wenn Du http mit der blanken Faust machst, kannst Du nach x Bytes aufhören, den Stream zu lesen.
__________________
Cheers, Marco
marsch ist offline  
Alt 01.06.2005, 20:32  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

hmm ein workaround das aber nicht ganz so sauber ist wäre erstmal mit get_headers abzufragen ob content-length / type okay sind und davon abhängig das ganze aufzubauen und dann mit fread und dessen parametern zu arbeiten, ist wohl eh bei ein paar sachen die ich im Kopf habe der bessere weg ... hmm werd ich mir wohl einen teil der CURL-funktionen nachbasteln über fsockopen oder so, gibts ja glaub ich sogar irgendwo schon nen nachbau (manual oder so).

wer trotzdem noch ne idee hat, kann gerne posten, bin für jeden Tip offen.



[edit]
oh ich seh grad ne antwort :P
naja geschwindigkeit hab ich bis jetzt nicht getestet, tests laufen eh nur auf dem server selbst und daher ist der zugriff wohl schnell :P

Zitat:
Da Curl ja nur http macht, wirst Du es nicht beschränken können. Wenn Du http mit der blanken Faust machst, kannst Du nach x Bytes aufhören, den Stream zu lesen.
hmm ist halt bis jetzt verwunderlich, weil fread etc kann ich auch ein limit angeben und CURL ist für mich so ne Art Wunderwaffe mit der ich halt viel machen kann, was ich mir sonst erst zusammensuchen muss / basteln, was wohl aber im endeffekt die lösung sein wird, weil bei 100mbit und ner executiontime von 10 sekunden sind da schon pro scriptaufruf, bei unfug mehr alls 100MB traffic möglich :P


mfg
robo47
robo47 ist offline  
Alt 01.06.2005, 22:58  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

hmm naja für den anfang zum testen bleib ich jetzt mal bei cURL, weils mir zu viel ist die ganzen sachen die ich mitlerweile eingebaut habe zu emulieren :P
aber eine theorhetische sperre hab ich wahrscheinlich schon:
das memory-limit von php :P
naja bin mal noch bissel rumtesten und dann wohl erstmal pennen :P
ist ja noch öhm ? omega-status :P
robo47 ist offline  
Alt 02.06.2005, 09:00  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Kannste nicht auf Serverseite den Output beschränken? Oder haste da keinen Einfluss? Ansonsten sehe ich keinen Grund, warum curl nur den halben HTTP-Output lesen sollte.
__________________
Cheers, Marco
marsch ist offline  
Alt 02.06.2005, 09:06  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von marsch
Kannste nicht auf Serverseite den Output beschränken? Oder haste da keinen Einfluss? Ansonsten sehe ich keinen Grund, warum curl nur den halben HTTP-Output lesen sollte.
Das script soll seiten aufrufen, auswerten und darin gefunden links auswerten und zum teil wiederrum aufrufen ... und ich wollte verhindern, dass dem script files > 100kb untergejubelt werden, geht ja im endeffekt um den traffic den das script verursacht und wenn da dummerweise ne file mit 100mb oder so verlinkt ist, fällt das schon ins gewicht. :P

mfg
robo47
robo47 ist offline  
Alt 02.06.2005, 09:10  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Naja ums mal auf den Punkt zu bringen, ich will ein Script entwickeln, das man einsetzen kann um einen kompletten Webauftritt mittels der tidy-engine validieren zu lassen, dazu muss halt, von der startseite ausgehen jedes html-dokument geparst werden, da man aber nie weis was für nen bockmist der server macht, wo er nen falschen / keine / zu wenig header sendet, will ich damit mißbrauch vorbeugen, weil ich das script später, klar mit limitierung des gesamt-traffics, auch auf meiner kiste hosten will, aber ich will halt verhindern, dass auf diesem wege unnötig viel traffic verbraucht wird :P

mfg
robo47
robo47 ist offline  
Alt 02.06.2005, 09:11  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Aah, ein Spiderlein
Na dann mach HTTP mit fsockopen und lies, solange DU willst Ist ja nicht weiter dramatisch. (Also prinzipiell, wie Dein Projekt aussieht, weiß ich natürlich nicht )
__________________
Cheers, Marco
marsch ist offline  
Alt 02.06.2005, 09:16  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

jab :P das ist wohl der weg den ich gehen muss, muss ich mir halt gewisse funktionalitäten selbst basteln, aber damit muss man rechnen wenn man es sich einfach machen will :P
robo47 ist offline  
Alt 02.06.2005, 13:14  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von robo47
jab :P das ist wohl der weg den ich gehen muss, muss ich mir halt gewisse funktionalitäten selbst basteln, aber damit muss man rechnen wenn man es sich einfach machen will :P
Es gäbe noch einen anderen Weg:
Fordere mit CURL von dem File nur den Header an, guck dort nach, ob Content-Length gesetzt ist, und werte dann aus, ob Du das File haben willst oder nicht. Wenn ja, noch mal MIT body abfordern.
 
 


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
änderung einer konfiguration mit curl emmi PHP Tipps 2008 12 08.02.2008 09:46
traffic anzeigen Ambience Scriptbörse 10 16.08.2007 14:09
Traffic vom Router messen dsmcg Off-Topic Diskussionen 5 09.02.2007 19:27
Datei Upload mit curl? R.E.M. PHP Tipps 2006 1 18.09.2006 20:44
CURL aufrufe in Klasse verpacken vegeta PHP Tipps 2006 8 16.05.2006 11:03
Traffic pro IP begrenzen PHP Tipps 2006 6 17.01.2006 21:42
abfrage begrenzen Cyrus Datenbanken 4 26.10.2005 11:29
traffic anzeigen imported_kremser PHP Tipps 2005-2 3 19.09.2005 17:26
traffic von nutzern aufzeichnen PHP Tipps 2005-2 10 25.07.2005 14:38
statt http_request über curl ? seven-12 PHP Tipps 2005-2 2 12.06.2005 22:47
Zufalls IP per Curl mitgeben Flor1an PHP Tipps 2005 4 04.05.2005 22:38
Traffic Problem TRW Off-Topic Diskussionen 3 05.03.2005 12:38
Traffic TRW Off-Topic Diskussionen 12 15.01.2005 06:44
[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 beschränken, curlopt_buffersize, php curlopt_buffersize, curl traffic begrenzen, curl traffic, curl geschwindigkeit begrenzen, curlopt_buffersize php, php curl_setopt bytes, php curl dies with timeout, curl dateigröße begrenzen, curl größe begrenzen, curl dateigrößen begrenzen, curl problem mit größe datei, php curl timeout, traffic auf webseite mit php beschränken, php curl curlopt_buffersize, geturlcontent bild php, curl file größe beschränken, curl extrem langsam, curl_setopt bytes begrenzen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:01 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.