cURL Größenbeschränkung bekommen
Ich möchte wissen, ob es irgendeinen Weg gibt, um nur eine bestimmte Menge von Daten über cURL?
Option 1:
curl_setopt ($curl_handle, CURLOPT_HTTPHEADER, array("Range: bytes=0-1000"));
aber nicht unterstützt von allen Servern
Option 2:
Probleme Begrenzung der download-Größe von PHP ' s cURL-Funktion , aber diese Funktion gibt mir Fehler Failed writing body (0 != 11350)
und Lesen für die habe ich gefunden, dass viele sagen es ist ein bug.
Also nach dem oben write_function
ich versuchte curl_close($handle)
statt returning 0
aber das wirft einen Fehler Attempt to close cURL handle from a callback
Nun die einzige Möglichkeit, die mir einfällt, ist-parsing-Header für content-length but this will eventually result in 2 requests ??
ersten immer Kopfzeilen mit CURLOPT_NOBODY
dann immer den kompletten Inhalt?
- Ist der Sinn nur Holen die ersten 1000 bytes aus der Datei, oder tun Sie brauchen nur die ersten 1000 bytes für Ihre Bearbeitung?
- Ich bin eigentlich der Aufbau einer css-Optimierer, der crawler eine website, und analysieren
<link>
- tags für css und<a>
zum Crawlen anderen links auf dieselbe domain für evtl. andereunique
css-Dateien und verketten + komprimieren. So wie css-Dateien und raw-html-Dateien in der Regel dont go über 500kb, ich will es begrenzen, so hüten, die Jungs, die gerade auf meinem server die zusätzliche Last, sondern macht meine Website analysieren gbs von Anker-tags - Sie können tun, dass mit
fsockopen
und Freunde, aber, dass die Optimierung lohnt sich nicht. Denken Sie daran, "vorzeitige Optimierung ist die Wurzel allen übels" - FYI ich habe gesehen, Sachen wie "Failed writing body (0 != 11350)", wenn die Festplatte voll war.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht klar, was Sie dort tun genau das. Wenn Sie 0 zurück, dann LOCKE wird das signal zu einem Fehler, sicher, aber Sie werden gelesen haben, alle Daten, die Sie benötigen. Einfach den Fehler ignorieren.
Andere option, die Sie gar nicht erwähnen, wenn Sie versucht haben, ist die Verwendung
fopen
mit derhttp://
wrapper. Zum Beispiel:fopen
also Versuch hier wissen, wenn es irgendwelche anderen Möglichkeiten , auf der Seite beachten, auch wenn er warf einen Fehler war es, immer alle Daten ( ich glaube, das kann auch sein wegen der schnellen Verbindung, die zu buffer-Größe, die äquivalent zu den ganzen Daten, ich werde versuchen, übermäßige langwierig Daten zum testen )Ist es möglich, mit fopen und fgets zum Lesen einer Zeile zu einem Zeitpunkt, bis Sie glauben, Sie haben genug zu Lesen Linien oder liest ein Zeichen in einer Zeit, mit fgetc.
fgets
Nicht sicher, ob dies ist genau das, was Sie suchen, sollte aber begrenzen Sie die Menge der Daten bekommen Sie von der remote-Quelle.
Das scheint Ihr problem zu lösen: