Curl update: phpinfo zeigt immer noch alte Version an.

Wie in etwa sollte die Bedingung bzw. Schleife im Skript dann aussehen
Das kann ich dir nicht sagen, weil ich a) dein Script nicht kenne und b) eher wenig mit Programmierung ansich zu tun habe, ich komme aus der Ecke der Administration...

was heißt rekursiv?
Das bedeutet, daß das Script eine bestimmte Anzahl Durchläufe abarbeiten soll, anschließend prüft, ob noch weitere Durchläufe gemacht werden müssen...wenn ja, speichert das Script seinen aktuellen Bearbeitungsstand zwischen und ruft sich selber neu auf. Dann liest das 'neue' Script den letzten Bearbeitungsstand ein, den du zwischengespeichert hast und macht an der Stelle weiter und absolviert die nächsten x Durchläufe deiner Adressermittlungen.
Durch den rekursiven Aufruf kann das Script quasi endlos laufen, ohne daß du dich um Time Limits kümmern brauchst.

Wie du das dann programmtechnisch umsetzt, wirst du ja sicher wissen ;)
 
Last edited:
@Andreas2022 Viel Erfolg beim Basteln des eigenen PHP-Programms.
Ich kann/will auch nicht weiter helfen, da die Quelle des Programms und der Code so dein großes Geheimnis bleibt.
Und diffuse Lösungsideen dir entgegen zu werfen, ohne code zu kennen, liegt mir nicht. Da könnte ich dir genauso Perl oder Python empfehlen, um den HTML-Code über LWP oder curl o.ä. zu holen und das HTML nach Bild-Links zu parsen.
 
Php hat doch standardmäßig einen execution_timeout oder so. Ist das in deiner php.ini (Achtung: Die php.ini für die cli, nicht für den webserver!) aktiv?

Ich persönlich glaube nicht dass der Fehler in der curl-lib liegt. Wie kommst du darauf?

Außerdem würde ich eher eine andere Programmiersprache nehmen für die Aufgabe. Python hat ganz gute Web Scraping Module und Go wäre Mittel der Wahl wenn du ordentlich parallelisieren willst.

Achja, wenn du so ein Script per Cron startest solltest du natürlich sicherstellen dass es nicht länger läuft als bis zum nächsten cron-aufruf. Sonst kriegste irgendwann auch den dicksten Server in die Knie.
 
Nein, kein Absturz. Cron meldet, dass der Job erfolgreich beendet wurde (Status 200). Jedoch wurden nur einige 100 Datensätze abgearbeitet. Merkwürdig ist, dass sich die Zahl der abgearbeiteten Daten nach und nach erhöht, je öfter ich das Skript laufen lasse.
Definitiv kein CURL Problem. Hier ist irgendwo ein Ratelimit. Sei es bei Wikipedia (was du machst darf man nämlich als DoS bezeichnen) oder irgendwo Lokal.
 
@GwenDragon keine Ahnung, was der schnippische Ton soll.
@ThomasChr wegen der php.ini werde ich noch mal nachschauen. Als blutiger curl-Anfänger habe ich gedacht, dass die neuere curl-version vielleicht besser mit sehr vielen URLs umgehen kann. Mit PHP kenne ich mich etwas aus, andere Skriptsprachen wären totales Neuland. Und danke für den Tipp mit dem Cronjob, das wäre meine nächste Überlegung gewesen, das Skript in mehreren Teilen mit weniger URLs laufen zu lassen.
 
Ich weiß zwar nicht wie umfänglich diese ist aber Wikipedia bietet eine authed API mit bis zu 5000req/h oder anonymous mit 500req/h an.

Solltest du dir mal anshauen bevor Wikipedia deine IP bannt wenn du da regelmäßig 10k ungebremste Anfragen hinschickst.

https://api.wikimedia.org/wiki/Documentation/Getting_started/Rate_limits

Die Endpoints für DE z.B. https://de.wikipedia.org/w/api.php
Oh, das wusste ich nicht! Muss ich mir definitiv noch mal anschauen!
 
@Andreas2022 Jede professionell gemachte Website hat logischerweise einen Schutz gegen Programme (sog. Bots) die zu schnell und zu oft Daten abgrasen. Und so einen hast du doch programmiert.
Und gegen solche Restriktionen hilft auch kein neue PHP curl-Bibliothek.

//EDIT:
Und Wikimedia verbietet laut https://commons.wikimedia.org/robots.txt so einigen speziell und auch allen!() User-Agents bestimmte Inhalte abzuholen.
Wer einen Bot baut, muss sowas wissen.
 
Last edited:
Naja, Wikipedia genehmigt ja ausdrücklich das Abgreifen von Daten von Ihrem Server, und ich denke wenn ich innerhalb der gestattete Limits bleibe, in diesem Fall angemeldet bei 5000 Aufrufe pro Stunde, ist alles in Ordnung.

Ich habe mir bei Wikimedia einen Account angelegt, um Zugangsdaten zu erhalten, in diesem Fall einen Personal API Token.
https://api.wikimedia.org/wiki/Documentation/Getting_started/Authentication#Personal_API_tokens

Als einfaches Beispiel ist folgender Code angegeben:
PHP:
# Get the Earth article from English Wikipedia 
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
https://api.wikimedia.org/core/v1/wikipedia/en/page/Earth/bare

Wie muss man dies in php Curl übersetzen? Vielen Dank im voraus!
 
Back
Top