Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi PHP Funktion aus Delphi aufrufen? (https://www.delphipraxis.net/64160-php-funktion-aus-delphi-aufrufen.html)

Angel4585 28. Feb 2006 11:14


PHP Funktion aus Delphi aufrufen?
 
Hallo zusammen,

ich habe ein php Skript mit folgendem Inhalt:
Code:
<?php

function Test($test){
  While(0){
      if (File_exists($test)){
        unlink($test);
        }
     }
  }
?>
jetzt möchte ich das ganze aus einem Delphiprogramm aufrufen

Das sollte dann etwa so aussehen:
Delphi-Quellcode:
ExecutePHP('http://localhost/Test/Test.php','Test(''C:\Test.txt'')');
Weis jemand von euch wie ich sowas mache/wie die Funktion ExecutePHP aussehen muss?

Wäre echt Klasse

Danke schonmal

MfG :angel:

glkgereon 28. Feb 2006 11:21

Re: PHP Funktion aus Delphi aufrufen?
 
Einzige möglichkeit die ich da sehe, ausser einem eigenen PHP-Parser:

mach dir ein script, welche die function mit übergebenen parametern aufruft und das ergebnis zurückgibt.

dann machst du sowas:

Delphi-Quellcode:
Res:=IdHTTP1.Get('http://localhost/Test.function.php?test=hallo');
@aenogym:
ich war schneller :-P
aber du ausführlicher :?

Aenogym 28. Feb 2006 11:24

Re: PHP Funktion aus Delphi aufrufen?
 
hi martin,

schriebe in deine PHP-datei foglendes:

Code:
if (isset($_GET['run']) and isset($_GET['arg']) {
  switch ($_GET['run']) {
    case "test": Test($_GET['arg']);
      break;
    //an dieser stelle ist platz für weitere case-labels, die andere funktionen aufrufen können
  }
}
dann packst du dir in deine delphi-anwendung zB. ein TIdHTTP (oder eine andere HTTP-komponente) und rufst dein script folgendermaßen auf:

http://localhost/Test/Test.php?run=f...e&arg=argument

aeno

edit: ich war zu lahm, aber poste es trotzdem ;)

[edit=alcaeus]Ne, PHP Tags haben wir nicht *g* Mfg, alcaeus[/edit]

malo 28. Feb 2006 11:26

Re: PHP Funktion aus Delphi aufrufen?
 
Du müsstest du PHP-Datei etwa so aufrufen:
Delphi-Quellcode:
ShellExecute(handle, 'open', 'http://localhost/Test/Test.php?function=Test&param=datei', nil, '', SW_SHOW);
Sitchwort: Bei Google suchenPHP Parameter
Dann kannst du in der PHP-Datei alles einzeln abfragen, mit Hilfe von $_GET ;)

//edit: :shock: Habt ihr keine Schule/Arbeit/Studium? :gruebel:

mkinzler 28. Feb 2006 11:44

Re: PHP Funktion aus Delphi aufrufen?
 
Es gibt auch Komponenten für Delphi, welche mit PHP interagieren. das Paket heißt PHP4Delphi und ist bei Sf.net erhältlich.

Angel4585 28. Feb 2006 12:19

Re: PHP Funktion aus Delphi aufrufen?
 
OKOKOKOK.. funktioniert... und wie halte ich das Genze wieder an? Hab ne Endlosschleife die immer die selbe Datei löscht.. wenn ich sie neue anlegen wird sie gleich gelöscht... negativer nebeneffekt.. aber ich weis jetzt das ich das machen kann was ich wollte... nur wie hört das jetzt wieder auf?

SirThornberry 28. Feb 2006 12:20

Re: PHP Funktion aus Delphi aufrufen?
 
eine Endlosschleife? das ist nicht dein Ernst? ruf doch in diesem Fall lieber die PHP-Funktion mehrfach auf. PHP ist nicht als scriptsprache für dauerhafte Verbindungen gedacht.

Phoenix 28. Feb 2006 12:25

Re: PHP Funktion aus Delphi aufrufen?
 
Alternativ dazu kannst Du auch den installierten php-Interpreter (also die php.exe) direkt ber Shellexecute aufrufen, die PHP-Datei als Parameter übergeben und die Rückgabe ist direkt das Ergebnis.

generic 28. Feb 2006 12:33

Re: PHP Funktion aus Delphi aufrufen?
 
^ es muss nicht die exe sein. du kannst den interpreter auch per dll einbinden.

aber wie oben schon stand: php4delphi!

Angel4585 28. Feb 2006 12:45

Re: PHP Funktion aus Delphi aufrufen?
 
moment... Ziel von dem Gannzen ist am ende ein Online RPG mit einem Client(dem Spiel an sich) zum runterladen, welches sich mit dem Server verbindet und die ganzen Skripte und Funktionen aufruft um die Daten in dem Programm anzeigen zu lassen. Da ich nur Webspace habe brauche ich eben ein php Skript.
Dieses Skript schreibt dann Daten in eine MySQL Datenbank, welche dann wiederum vom Programm aus gelesen werden. Da ein Quest auch stattfinden kann wenn kein Client angemeldet ist muss das Skript ja in einer Schleife immerwieder abfragen ob denn jetzt der Zeitpunkt gekommen ist und der Quest ausgeführt werden kann. Einwände? Oder mach ich das richtig so?

omata 28. Feb 2006 20:03

Re: PHP Funktion aus Delphi aufrufen?
 
@mkinzler:

Zitat:

Zitat von mkinzler
Es gibt auch Komponenten für Delphi, welche mit PHP interagieren. das Paket heißt PHP4Delphi und ist bei Sf.net erhältlich.

hast du das mal zum Laufen gebracht?

Ich wollte das mal unter Delphi7 ausprobieren. Aber leider klappt das überhaupt nichts. Das PDF in dem Archiv kann man auch nicht öffnen.

Was mach ich falsch?

Hoffnungsvolle Grüsse
Thorsten

Angel4585 28. Feb 2006 20:30

Re: PHP Funktion aus Delphi aufrufen?
 
ich hab nur D2005.. und da es nur für 5 6 und 7 ist hab ichs jetzt nich angeschaut

mkinzler 28. Feb 2006 20:41

Re: PHP Funktion aus Delphi aufrufen?
 
Zitat:

Zitat von Angel4585
ich hab nur D2005.. und da es nur für 5 6 und 7 ist hab ichs jetzt nich angeschaut

In der neuesten Version sind auch Packages für BDS2005/2006 dabei.
@omata: Ich habe es unter D6 mal ausprobiert ( schon ne Weile her) Jetzt unter D10 hab ich mal installiert. das hat funktioniert. Die PDF lies sich auch problemlos öffen. Vielleicht ist dein Download korrupt :-(

Angel4585 28. Feb 2006 20:46

Re: PHP Funktion aus Delphi aufrufen?
 
bei mir ging die pdf au net.. was macht des ding eigentlich genau??

Angel4585 28. Feb 2006 21:01

Re: PHP Funktion aus Delphi aufrufen?
 
ah jetzt versteh ich... du meinst ich kann damit php skripte ausführen ohne Webserver... das ist aber nicht meine Frage gewesen..diese war.. wie kann ich Funktionen eines php-Skripts aufrufen? Beispielsweise ein Skript auf einem Webserver... das Programm soll dem Skript den "Befehl" geben an einem bestimmten Zeitpunkt in der Zukunft eine bestimmte Aktion auszführen... beispielsweise etwas in eine Datenbank schreiben...ich werde das Skript aber nich lokal auf dem Rechner haben

mkinzler 28. Feb 2006 21:08

Re: PHP Funktion aus Delphi aufrufen?
 
Die Lösung steht doch schon weiter oben. Zuerst mußt du dein Skript erweiterm bzw. eine Skript schreiben welches Paramter vom Webserver empfängt und die Funktion mit diesem Parameter aufgerufen wird. sie Beitrag von
Aenogym.
Dann mußt du das Skript starten etwas so (Bsp. von glkgereon)
Delphi-Quellcode:
Res:=IdHTTP1.Get('http://localhost/Test.function.php?test=hallo');

Angel4585 28. Feb 2006 21:14

Re: PHP Funktion aus Delphi aufrufen?
 
ja und das funktioniert auch.. nurnoch ne kleine Diskussion wie mans noch machen kann..weitere Möglichkeiten.. warum kommt bei ner Schleife die auf einen Zeitpunkt wartet irgendwaann der Fehler mit 30 Sekunden Executiontime?

mkinzler 28. Feb 2006 21:16

Re: PHP Funktion aus Delphi aufrufen?
 
In der php.ini kann man die laufzeit eines Skriptes auf eine bestimmte Zeit begrenzen. (Timeout)

Angel4585 28. Feb 2006 21:27

Re: PHP Funktion aus Delphi aufrufen?
 
aha.. wenn ich mein Skript auf meinen Webspace zieh.. welche php.ini wird da genommen? Muss ich eine eigene hochladen oder wird die die schon auf de Server drauf ist genommen? Bzw. Kann ich das Timeout dann für gewöhnlich abstellen, so das es "ewig" weiterläuft?

mkinzler 28. Feb 2006 21:39

Re: PHP Funktion aus Delphi aufrufen?
 
Zitat:

Zitat von Angel4585
aha.. wenn ich mein Skript auf meinen Webspace zieh.. welche php.ini wird da genommen? Muss ich eine eigene hochladen oder wird die die schon auf de Server drauf ist genommen? Bzw. Kann ich das Timeout dann für gewöhnlich abstellen, so das es "ewig" weiterläuft?

Durch eine .htaccess Datei im Verzeichnis können Einstellungen der zentralen ini überschrieben werden.

Der Standart isr 30 sekunden
Code:
max_execution_time = 30
im Abschnitt resource limits.

Du kannst ja mal versuchen diese Einstellungen für dein Verzeicnis hochzusetzen. BTW. sie Beschränkung der Laufzeit eines Skriptes auf einem Webserver ist absolut sinnvoll.

Angel4585 1. Mär 2006 07:22

Re: PHP Funktion aus Delphi aufrufen?
 
Ja aber wie wird das dann gemacht wenn jemand z.B. in einem Spiel ein Gebäude baut und dieses erst nach 8 Tagen fertig ist?

mkinzler 1. Mär 2006 07:31

Re: PHP Funktion aus Delphi aufrufen?
 
Ich würde den Baubeginn wegschreiben. Bei jedem weiteren Zugriff würde dann nur das aktuelle Zeitstempel mit den abgespeicherten Werten abfragen.
Deien Vorgehensweise ist sehr gefährlich, den so würde bei mehreren Mitspielern mit je mehreren Bauaufträgen, der Server innerhalb kürzerster Zeit total überlastet sein ( Speicher / Anzahl laufender "Pseudo"-Prozesse.

Angel4585 1. Mär 2006 07:32

Re: PHP Funktion aus Delphi aufrufen?
 
huch hab ich ganz vergessen.. hmm.. ok ich probier das heut abend mal aus wenn ich daheim bin..

Angel4585 1. Mär 2006 11:19

Re: PHP Funktion aus Delphi aufrufen?
 
Schonmal Sorry wegen Doppelpost.. Pushen wie mans nennen will..

Wenn ich das jetzt so mache brauch ich ja eigentlich garkein php, dann kann ich doch direkt mit dem Programm auf die Datenbank zugreifen und das ganze auswerten oder?

Angel4585 1. Mär 2006 12:31

Re: PHP Funktion aus Delphi aufrufen?
 
Hmm.. also an sich gibt es für einen Spieler immer nur einen Prozess... allerdings soll das Spiel mit bis zu 100.000 Spielern gleichzeitig laufen...(nur theoretisch)d.h. es sind dann auch bis zu 100.000 Prozesse.

Ich kapier nicht ganz wie das ein "normales" reines php Browsergame macht. Das muss doch irgendwie auf den Zeitpunkt reagieren oder? Meinst du das Skript wird beim Aufrufen "angeschubst" damit es schaut ob was zu tun ist? Wenn ja, wie wird dann ein Countdown von sagen wir mal 3 Tagen und 20 Stunden angezeigt, der dann die ganze Zeit runterläuft??..Hmm.. vielelicht mit Javascript? der Zeitpunkt wird ausgelen, ans Javaskript wird en countdown übergeben und es geht dann einfach von dem Zeitpunkt aus und zählt runter.. das wär natürlich ne Möglichkeit...

Edit: und wenn der Countdown zuEnde ist wird ein "Request" gesendet, der die neuen Daten anfordert... so müsste es gehen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 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