![]() |
PHP Funktion aus Delphi aufrufen?
Hallo zusammen,
ich habe ein php Skript mit folgendem Inhalt:
Code:
jetzt möchte ich das ganze aus einem Delphiprogramm aufrufen
<?php
function Test($test){ While(0){ if (File_exists($test)){ unlink($test); } } } ?> Das sollte dann etwa so aussehen:
Delphi-Quellcode:
Weis jemand von euch wie ich sowas mache/wie die Funktion ExecutePHP aussehen muss?
ExecutePHP('http://localhost/Test/Test.php','Test(''C:\Test.txt'')');
Wäre echt Klasse Danke schonmal MfG :angel: |
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:
@aenogym:
Res:=IdHTTP1.Get('http://localhost/Test.function.php?test=hallo');
ich war schneller :-P aber du ausführlicher :? |
Re: PHP Funktion aus Delphi aufrufen?
hi martin,
schriebe in deine PHP-datei foglendes:
Code:
dann packst du dir in deine delphi-anwendung zB. ein TIdHTTP (oder eine andere HTTP-komponente) und rufst dein script folgendermaßen auf:
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 } } ![]() aeno edit: ich war zu lahm, aber poste es trotzdem ;) [edit=alcaeus]Ne, PHP Tags haben wir nicht *g* Mfg, alcaeus[/edit] |
Re: PHP Funktion aus Delphi aufrufen?
Du müsstest du PHP-Datei etwa so aufrufen:
Delphi-Quellcode:
Sitchwort:
ShellExecute(handle, 'open', 'http://localhost/Test/Test.php?function=Test¶m=datei', nil, '', SW_SHOW);
![]() Dann kannst du in der PHP-Datei alles einzeln abfragen, mit Hilfe von $_GET ;) //edit: :shock: Habt ihr keine Schule/Arbeit/Studium? :gruebel: |
Re: PHP Funktion aus Delphi aufrufen?
Es gibt auch Komponenten für Delphi, welche mit PHP interagieren. das Paket heißt
![]() |
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?
|
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.
|
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.
|
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! |
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? |
Re: PHP Funktion aus Delphi aufrufen?
@mkinzler:
Zitat:
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 |
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
|
Re: PHP Funktion aus Delphi aufrufen?
Zitat:
@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 :-( |
Re: PHP Funktion aus Delphi aufrufen?
bei mir ging die pdf au net.. was macht des ding eigentlich genau??
|
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
|
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');
|
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?
|
Re: PHP Funktion aus Delphi aufrufen?
In der php.ini kann man die laufzeit eines Skriptes auf eine bestimmte Zeit begrenzen. (Timeout)
|
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?
|
Re: PHP Funktion aus Delphi aufrufen?
Zitat:
Der Standart isr 30 sekunden
Code:
im Abschnitt resource limits.
max_execution_time = 30
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. |
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?
|
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. |
Re: PHP Funktion aus Delphi aufrufen?
huch hab ich ganz vergessen.. hmm.. ok ich probier das heut abend mal aus wenn ich daheim bin..
|
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? |
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 12:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz