php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.01.2010, 17:22  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard Cronjob mit PHP Datei?

Hallo,

ich habe eine Frage über die Arbeit mit Cronjobs. Ich nutze aktuell für ein Projekt ein Cronjob, welches via wget eine lokale PHP Datei ausführt, die bestimmte benutzerspezifische Daten von einem externen Server läd, auswertet und abspeichert. Der Vorgang besteht übrigens aus mehreren Schritten (Login, Datei laden und abspeichern, Datei parsen und in die Datenbank schreiben).

Der ganze Vorgang dauert jetzt schon recht lange (ca. 20sek) und wenn ich das Projekt später auf mehrere User erweitere, wird die Zeit mit deren Anzahl entsprechend steigen.

Ich frage mich jetzt, ob man solche Dinge mit einem Cronjob löst, das eine PHP Datei aufruft oder gibt es dafür andere Vorgehensweisen? Sollte man alle Schritte nacheinander für alle User ausführen lassen oder kann man die Arbeit irgendwie aufteilen bzw. parallel für mehrere Nutzer ausführen lassen?


mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 19.01.2010, 17:26  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Du kannst das Skript natürlich öfters aufrufen lassen und jedes mal nur einen Teil der User bedienen.

Aber wenn es solch Zeitaufwendige Aufgaben sind dann ist es eigentlich besser wenn du eine andere Programmiersprache nutzt. Dann kannst du ein Programm schreiben das im Hintergrund immer die Aufträge verarbeitet. Somit wird zum einen der "Job" sofort erledigt sobald er eingestellt wird und es gibt kein Timelimit.
Flor1an ist offline   Mit Zitat antworten
Alt 19.01.2010, 17:27  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Wieso rufst du ein lokales PHP-Skript per wget auf? Warum nicht direkt über das CLI?
Code:
php -f lokaler/pfad/zur/php/datei.php
Ich weiß ja nicht, was du mit der PHP-Datei anstellst, aber letztendlich ist die Ausführungszeit ja egal, solange du keinen max_execution_time-Fehler produzierst (was sich ja bei CLI-Aufruf leicht durch unterschiedliche Konfigurationen für Web und CLI gewährleisten lässt).
Wenn du das beschleunigen willst, dann solltest du zunächst mal die PHP-Datei optimieren. 20 Sekunden sind schon eine ganze Menge (über das CLI werden es wegen fehlender Netzwerklatenz natürlich weniger sein), was sich sehr nach inperformanten Algorithmen/Datenbankabfragen anhört. Wenn du trotz aller Optimierung immer noch mehr Performance rausholen willst, dann solltest du überlegen, das in einer schnelleren Sprache zu schreiben (z.B. Perl [ist aber nicht unbedingt schneller] oder gleich C).
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 19.01.2010, 17:28  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

"externer Server" klingt für mich nach dem Flaschenhals. Vielleicht kannst Du da optimieren.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 19.01.2010, 17:34  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Oha, das habe ich ganz überlesen. Ja, ein externer Server meist ungut. Was ich aber sonst geschrieben habe, gilt natürlich weiterhin.
Sollte der externe Server wirklich notwendig sein, dann solltest du dir mal Gedanken über Optimierungen bezüglich der Übertragung dorthin machen.

a) befinden sich beide im gleichen Netzwerk? Dann lade den Kram über das lokale Netzwerk rüber.
b) hast du root-Zugriff? Dann steige am besten auf Methoden wie NFS statt FTP um.
c) sind die Daten versioniert? Dann prüfe, ob eine erneute Übertragung wirklich notwendig ist
d) wenn möglich, komprimiere die Daten (z.B. per gzip oder bzip2)
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 19.01.2010, 17:35  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard

Zitat:
Zitat von Flor1an Beitrag anzeigen
Aber wenn es solch Zeitaufwendige Aufgaben sind dann ist es eigentlich besser wenn du eine andere Programmiersprache nutzt. Dann kannst du ein Programm schreiben das im Hintergrund immer die Aufträge verarbeitet. Somit wird zum einen der "Job" sofort erledigt sobald er eingestellt wird und es gibt kein Timelimit.
Gute Idee. Allerdings gibt es bei meinem Projekt nicht in diesem Sinne "Jobs". Es ist viel mehr so, dass einmal am Tag für alle User die Daten gesammelt werden müssen, da die Daten auf dem externen Server einmal am Tag aktualisiert werden.

Zitat:
Zitat von Manko10 Beitrag anzeigen
Wieso rufst du ein lokales PHP-Skript per wget auf? Warum nicht direkt über das CLI?
Code:
php -f lokaler/pfad/zur/php/datei.php
Ich weiß ja nicht, was du mit der PHP-Datei anstellst, aber letztendlich ist die Ausführungszeit ja egal, solange du keinen max_execution_time-Fehler produzierst (was sich ja bei CLI-Aufruf leicht durch unterschiedliche Konfigurationen für Web und CLI gewährleisten lässt).
Sollte doch von der Performance her egal sein oder?

Zitat:
Zitat von Manko10 Beitrag anzeigen
Wenn du das beschleunigen willst, dann solltest du zunächst mal die PHP-Datei optimieren. 20 Sekunden sind schon eine ganze Menge (über das CLI werden es wegen fehlender Netzwerklatenz natürlich weniger sein), was sich sehr nach inperformanten Algorithmen/Datenbankabfragen anhört.
Zitat:
Zitat von nikosch Beitrag anzeigen
"externer Server" klingt für mich nach dem Flaschenhals. Vielleicht kannst Du da optimieren.
Die lange Dauer der Ausführung liegt an mehreren cURL Ausführungen, die gemacht werden müssen (Login, Daten laden). Das anschließende Parsen und Schreiben in die DB sind bei der Zeit zu vernachlässigen.

Zitat:
Zitat von Manko10 Beitrag anzeigen
Wenn du trotz aller Optimierung immer noch mehr Performance rausholen willst, dann solltest du überlegen, das in einer schnelleren Sprache zu schreiben (z.B. Perl [ist aber nicht unbedingt schneller] oder gleich C).
Das wäre eine Überlegung wert. Wobei, wie oben geschrieben, wahrscheinlich nur die Serverlatenzen die lange Ausführungsdauer herbeiführen.

mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline   Mit Zitat antworten
Alt 19.01.2010, 17:38  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard

Zitat:
Zitat von Manko10 Beitrag anzeigen
Oha, das habe ich ganz überlesen. Ja, ein externer Server meist ungut. Was ich aber sonst geschrieben habe, gilt natürlich weiterhin.
Sollte der externe Server wirklich notwendig sein, dann solltest du dir mal Gedanken über Optimierungen bezüglich der Übertragung dorthin machen.

a) befinden sich beide im gleichen Netzwerk? Dann lade den Kram über das lokale Netzwerk rüber.
Nein, der Server steht vermutlich sogar auf einem anderen Kontinent. Ist ja auch nicht meiner
b) hast du root-Zugriff? Dann steige am besten auf Methoden wie NFS statt FTP um.
Nein, nur via HTTP
c) sind die Daten versioniert? Dann prüfe, ob eine erneute Übertragung wirklich notwendig ist
Ja sind sie. Ich lade auch nur Dateien auf meinen Server herunter, die noch nicht existieren und noch nicht in der DB indiziert sind.
d) wenn möglich, komprimiere die Daten (z.B. per gzip oder bzip2)
Die Dateien werden bereits im gzip Format zur Verfügung gestellt und sind soweit sowieso nur wenige Bytes große Textdateien.
mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline   Mit Zitat antworten
Alt 19.01.2010, 17:38  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Zitat:
Sollte doch von der Performance her egal sein oder?
Eindeutig nein! Außerdem ist es sicherer gegenüber Manipulation und deutlich zuverlässiger.

Zitat:
Die lange Dauer der Ausführung liegt an mehreren cURL Ausführungen, die gemacht werden müssen (Login, Daten laden). Das anschließende Parsen und Schreiben in die DB sind bei der Zeit zu vernachlässigen.
Wie nikosch und ich schon schrieben: Flaschenhals, das musst du uns nicht erklären.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 19.01.2010, 17:40  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Vielleicht solltest Du für den externen Server eine I/O-Schnittstelle mit alternativer Authentifizierung bauen. Wo man bspw. auch mehrere User im Bündle verarbeiten kann. Ein Loginvorgang für jeden einzeln ist natürlich sehr aufwendig.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 19.01.2010, 17:42  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Wie sieht es mit SSHFS (SFTP) aus?
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 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
Datei per Buttonklick runterladen... go1denboy PHP Tipps 2008 7 14.06.2008 20:25
Großer Baum -> Große Datei -> Hohe Ladezeit :( PsychoEagle PHP Tipps 2008 7 22.09.2007 12:44
.gz Datei entpacken und mit dem Inhalt weiterarbeiten R4v3r PHP Tipps 2007 8 02.02.2007 14:49
php cronjob erstellt keine txt-datei... MrCavity Server, Hosting und Workstations 1 14.10.2006 15:57
String als Datei speichern Zangelo PHP Tipps 2006 23 25.08.2006 14:13
[Erledigt] Per Cronjob Datei erstellen Server, Hosting und Workstations 5 01.05.2006 20:46
Datei auf FTP-Server ändern ohne lokal abzuspeichern faux PHP-Fortgeschrittene 11 02.09.2005 11:54
Datei mehrmals öffnen und schließen in einem Skript PHP Tipps 2005-2 14 14.07.2005 18:12
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
Includete Datei nicht gleich ausgeben Madden PHP-Fortgeschrittene 1 12.05.2005 00:19
xfdf Datei mit PHP an eMail senden Problem: Leere Datei PHP Tipps 2004-2 1 07.12.2004 12:25
Dateien lesen und schreiben [mehr als: r,a,w]? PHP Tipps 2004 4 24.10.2004 18:53
[Erledigt] datei editieren PHP Tipps 2004 1 10.09.2004 20:33
(ich schonwieder) Link seite automatisch imported_DJ Nuno PHP Tipps 2004 14 19.08.2004 17:42
Wie kann ich eine PHP Datei in eine HTML Datei umwandeln PHP Tipps 2004 2 12.08.2004 18:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
externer cronjob, http://www.php.de/php-fortgeschrittene/63574-cronjob-mit-php-datei.html, externe cronjobs, cronjob php datei, lokaler cronjob, cron job mit php, php datei cronjob, cronjob externe datei, cronjob mit php, mit cronjobs arbeiten, cron curl php, externer cronjob lokaler server problem, cronejobs 1 und 1 performence, cronjob für php datei, cronjob externe php datei, php cli beschleunigen, curl cronjob, server cronjob php speicherort, php datei vom netzwerk, cronjob externer server

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