Performance verbessern
Ich arbeite grade an einem Projekt. (Es ist auch schon veröffentlicht)
Wenn ihr mal auf die Seite geht werdet ihr verstehen worum es ungefähr geht. Ich hoffe ihr kennt Twitter und StudiVZ oder so ein bisschen. Mein Projekt besteht eigentlich aus einem Webinterface, einer MySQL-Datenbank mit den ganzen Benutzerdaten und einem Skript, dass die Hauptarbeit macht und eben so jede Viertelstunde mit nem Cronjob dann ausgeführt wird. Leider habe ich jetzt bereits 200 Nutzer und es werden mehr. Und irgendwie braucht das PHP-Skript natürlich immer länger und länger. Dazu kommt, dass es stehen bleibt, wenn es auf einen Nutzer stößt, der falsche Daten angegeben hat. Also dachte ich mir, schreibste das mal neu. Das Problem mit dem anhalten bei falschen Daten ist jetzt auch behoben und ich hab sogar zum ersten Mal objektorientiert programmiert. Klappt eigentlich auch alles. Aber es ist immer noch zu langsam. Ja und das ist meine Frage. Am meisten Zeit braucht ja immernoch cURL. Kann man das irgendwie optimieren? Hier mal die 2 Funktionen aus meiner Klasse. Einmal für die Twitter API: PHP-Code:
PHP-Code:
|
AW: Performance verbessern
evtl kannst du die was rausholen, wenn du die Sockets direkt ansprichst, was aber nicht signifikant sein wird.
Du hast einfach das Problem, dass du immer auf die Gegenseite warten musst, was natürlich Zeit kostet. Vielleicht würde es dir helfen, wenn du deine Arbeit einfach auf mehrere Threads verteilst, evtl mehrere Server? Hab keine Ahnung wo bei dir der Flaschenhals ist, so ganz ohne Glaskugel. Am besten du beobachtest mal ob du lokal irgendwo einen Flaschenhals hast, wenn nicht kannst du immernoch Threads parallel laufen lassen. Gruß Domi |
AW: Performance verbessern
Zitat:
|
AW: Performance verbessern
kannst du nicht einfach mehrere Scripte per cronjob paar Sekunden versetzt starten lassen? Dann sollte er die doch parallel abarbeiten. Geht das nicht wird dir die Suchmaschine deines Vertrauens sicher eine Lösung dazu geben ;)
Domi |
AW: Performance verbessern
Zitat:
also ich hab ne mysql-datenbank und für jeden user muss ein script gestartet werden ... also die zahl variiert und so .. sind cronjobs so flexibel und können auch mysql-datenbanken auslesen? |
AW: Performance verbessern
Hi,
also Du solltest wirklich erst einmal herausfinden wo der Flaschenhals ist. Einfach zu sagen es liegt an Curl ist absolut unzureichend denn das Problem kann ganz woanders liegen. Analysiere einfach mal mit Curl wie lange er für die einzelnen Bereiche (Nameserver abfragen, Anpingen der Seite, Response erhalten etc) benötigt. Mit diesen Informationen kannst Du sehr gut sehen wo und wie Du optimieren kannst. Bei unserem CronJob-Service machen wir das nicht anders - CURL und mehrere Threads mittels CronJob. Und der ballert mehrere 1000 pro Minute locker raus. Damir |
AW: Performance verbessern
Und wie messe ich das?
|
AW: Performance verbessern
Ich hab mal das Unnötige was Du nicht brauchst aus unserer Function heraus geschmissen und für Dich einige Parameter gesetzt - den Rest musst Du selber nach belieben anpassen:
PHP-Code:
Bei SELFPHP kam gerade z.B. das heraus: Code:
Array |
AW: Performance verbessern
Mit dem Zeit messen mach ich später grade hab ich noch ein anderes Problem (das möglichst sofort behoben werden muss).
Falls ein User falsche Daten angibt stockt das ganze System und hört dann irgendwann wegen Timeout auf. Gibt es eine cURL-Option, die so was verhindert? Also wenn zum Beispiel länger als 5 Sekunden nix geht oder so? Oder gibt es andere Lösungsansätze für so etwas? TIA, Jakob ;) |
AW: Performance verbessern
Zitat:
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 09:17:30 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.