AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein PHP Skript Ereignis bedingt ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

PHP Skript Ereignis bedingt ausführen

Ein Thema von RWarnecke · begonnen am 7. Dez 2013 · letzter Beitrag vom 7. Dez 2013
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

PHP Skript Ereignis bedingt ausführen

  Alt 7. Dez 2013, 10:05
Hallo zusammen,

ich suche nach einer Möglichkeit ein PHP Skript in Abhängigkeit von einem oder mehreren Ereignissen auf eine Webserver auszuführen. Welche Möglichkeiten bieten sich mir da ? Aus meiner Sicht fällt der Cronjob hier raus, da ich nach meinem Kenntnisstand nur ein PHP Skript zu einer bestimmten Uhrzeit oder in einem bestimmten Rhythmus ausführen kann.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

AW: PHP Skript Ereignis bedingt ausführen

  Alt 7. Dez 2013, 11:06
Was sind denn das für Ereignisse?

Selbst ein periodischer Cronjob kann auf ein unperiodisches Ereignis reagieren.
Sein Intervall des Ereignis muß nur in etwa ein Vielfaches des Cronjob-Intervalls sein.
Der Cronjob startet regelmäßig das Skript, Dieses schaut ob es was zu machen gibt und macht es, oder eben nicht.

Bei meinem klinen Wordpress werden die vielen Suchmaschienen und Spambots als "Cronjobs" genutzt ... da kommt ja immer mal was vorbei, ruft eine Seite auf und startet die Scripte.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: PHP Skript Ereignis bedingt ausführen

  Alt 7. Dez 2013, 11:17
Was sind denn das für Ereignisse?
Ich möchte gerne so eine Art Scheduler erstellen. Wenn zum Beispiel ein neuer Eintrag in einer MySQL-Tabelle gemacht wird, dann soll das PHP Skript reagieren und Daten aus dem Eintrag lesen und die in die Scheduler-Liste schreiben.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: PHP Skript Ereignis bedingt ausführen

  Alt 7. Dez 2013, 16:15
PHP unterstützt zwar Thread nicht ab Werk, es gibt aber Posix-kompatible Thread Erweiterungsbibliotheken. Der Thread kann dann asynchron regelmäßig prüfen ob es ein neues Ereignis gibt bzw. auf externe Signale warten.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#5

AW: PHP Skript Ereignis bedingt ausführen

  Alt 7. Dez 2013, 21:31
Meiner Meinung nach kommt es ganz auf die Art der Ereignisse an, um die beste Lösung zu finden.
Du hast ja generell die Wahl, ob es passive Ereignisse (e.g. Polling) oder aktive Ereignisse (e.g. Trigger) sind.

Generell würde ich bei deinem Szenario "Nach Insert in mySQL soll ein php getriggert werden" den passiven Weg gehen, falls es nicht extrem zeitkritisch ist.
So wäre das ganze relativ einfach über einen Cronjob zu lösen, wie ihn himitsu vorgeschlagen hat.
Hier kann der Cronjob auf das Minimum eingestellt werden (1 Minute) und einfach bei Ausführung prüfen, ob ein neuer Datensatz in der entsprechenden mySQL-Tabelle vorhanden ist und dann das entsprechende php-Script ausführen bzw, wenn der Cronjob bereits ein php-Script ist, entsprechende Aktionen durchführen.
Du hast bei "deinem Kenntnisstand" glaube ich einfach nicht bedacht, dass auch in einem Cronjob, der in einem Rhythmus von 1 Minute ausgeführt wird, Bedingungen möglich sind und somit auch mal einfach gar nichts passieren kann, wenn die Bedingung nicht zutrifft

Ist die minimale Reaktionszeit eines Cronjobs (1 Minute) zu langsam, ginge es in mySQL auch über einen aktiven Trigger und einer UDF, die wiederum bei einem Insert ein externes php-Script triggert.
Diese Lösung ist allerdings um einiges aufwändiger, da sie, je nach UDF, evtl. eine Neukompilierung von mySQL erfordert.

Wie du siehst, sind beide Lösungen hier auf dein Szenario "mySQL-Änderung" gemünzt.
Die beste Lösung für dich wird sich aber nur finden lassen, wenn man alle möglichen Ereignisstypen bei dir kennt und ob die Möglichkeit besteht, bei ALLEN entsprechenden Ereignissen ein Shell-Commando auszuführen.
Ist das der Fall, wird es einfach, da du über die Shell einfach ausführen kannst, was du willst (wie z.B. den php-CLI Interpreter).
Kannst du das aber nicht bei allen Ereignissen, wird es u.U. komplizierter.

Eine andere Möglichkeit wäre es auch noch, statt einem Cronjob z.B. ein node.js-Script auf dem Server laufen zu lassen, das die mySQL-Tabelle aktiv überprüft und dann darüber das php-Script triggert. Wobei sich dann die Frage stellt, wofür man dann noch ein php-Script benötigt
Ich habe jedoch selbst so etwas schon einmal für ein Online-Game gemacht: Der user loggt sich in ein php-Framework ein, Ereignisse werden jedoch über Websocket an einen node-Server gesendet, der dann auch ohne zeitverzögerung die entsprechenden Aktionen ausführen kann.

Desweiteren bietet sich vielleicht auch ein Call über einen REST- / SOAP- / Whatever-Service an, der die entsprechenden Aktionen ausführt.
Hierzu müsste aber die Möglichkeit gegeben sein, bei jedem relevanten Ereigniss einen Request abzuschicken.

Geändert von blackfin ( 7. Dez 2013 um 22:19 Uhr)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#6

AW: PHP Skript Ereignis bedingt ausführen

  Alt 7. Dez 2013, 21:42

Bei meinem klinen Wordpress werden die vielen Suchmaschienen und Spambots als "Cronjobs" genutzt ... da kommt ja immer mal was vorbei, ruft eine Seite auf und startet die Scripte.
Coole Idee!
Da wäre ich selber nicht draufgekommen. Wahrscheinlich nicht immer regelmäßig, aber wenn es so reicht, muss man keinen Webserver mit Cronjobs haben. Kostet ja meistens etwas mehr.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras ( 7. Dez 2013 um 21:45 Uhr)
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#7

AW: PHP Skript Ereignis bedingt ausführen

  Alt 7. Dez 2013, 21:49
Zitat von himitsu:
Bei meinem klinen Wordpress werden die vielen Suchmaschienen und Spambots als "Cronjobs" genutzt ... da kommt ja immer mal was vorbei, ruft eine Seite auf und startet die Scripte.
CMS-Systeme wie Typo3 und Drupal machen das inzwischen "out of the box" auch so, falls man keine Cronjobs auf dem Server hat.
Falls du das erfunden hast, himitsu: Schade für dich, dass du kein Patent angemeldet hast
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#8

AW: PHP Skript Ereignis bedingt ausführen

  Alt 7. Dez 2013, 22:15
Voll blöd, ich weiß

Für eine praktisch unbekannte Webseite sind es immernoch 25-50 Aufrufe pro Tag, also fast stündlich.
Und bei Daniel wäre das hier bestimmt fast sekündlich.


Ich glaub von selfphp.de gibt/gab es mal kostenlose Cronjobs und ein zwei andere Anbieter gab es auch mal.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 7. Dez 2013 um 22:19 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz