Externes Skript einbinden

Alice

Erfahrenes Mitglied
Hallo Leute.

Es gibt ein paar Wege externe Skripte einzubinden. Ich habe mich für "require" entschieden. Zusätzlich habe ich eine Abfrage eingebaut, der erst einmal prüft, ob das externe Skript überhaupt verfügbar ist mit "fopen".

Das Problem ist, dass es zu lange dauert, die Seite zu laden, wenn der externe Server offline ist.

Jemand eine Idee wie man ein externes Skript sicher und schnell (inkl. Prüfung) realisieren könnte?
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

ich verstehe nicht so recht, was du erreichen willst. Kannst du uns bitte etwas Code zeigen und evtl auch erklären, was du erreichen / absichern willst?

Grüsse,
BK
 

Alice

Erfahrenes Mitglied
Hallo. :)

1. Skript auf Server A
PHP:
<?php
   if (@fopen('http://XXXXXX.ddns.net/das-skript.php','r'))
   {
       @require('http://XXXXXX.ddns.net/das-skript.php');
   }
       else
   {
       echo "Nicht erreichbar!";
   }
?>

2. Skript auf Server B
PHP:
<?php
...
?>

Server A ist eigentlich nur die Domain und der Style der Website (HTML, CSS und JS). Die echte Arbeit wird von Server B gestemmt (Berechnungen, Inkscape etc pp).
 

ComFreek

Mod | @comfreek
Moderator
Wie liefert Server B denn *.php Dateien aus? Führt er sie aus und liefert deren Ausgabe oder liefert er deren rohes Skript?
Das kannst du überprüfen, indem du einfach zu http://example.com/das-skript.php mit deinem Browser navigierst. Was kommt als Quelltext?

Falls er sie ausführt: require unnötig und Sicherheitslücke => file_get_contents stattdessen nutzen.
Falls er sie nicht ausführt: damit ist das Skript von Server B für jeden frei einsehbar, indem er zu der URL navigiert.

Falls Server B offline ist, so möchtest du einen schnellen Abbruch, d.h. du möchtest einen kleinen Timeout. "file_get_contents timeout" auf Google bringt etwa: Does file_get_contents() have a timeout setting?
 

Alice

Erfahrenes Mitglied
Hallo Leute.

Ich muss die Frage leider noch einmal aufgreifen.

Skript A = Ist eine ausführbare PHP-Datei, für die Benutzereingaben (Taschenrechner-Oberfläche)
Skript B = Ist eine ausführbare PHP-Datei, die lediglich Benutzereingaben berechnet (Taschenrechner-Engine)

Beide Skripte liegen auf unterschiedlichen Servern.

Ziel: Der Benutzer gibt (Skript A) seine Daten (z.B. eine mathematische Formel) in das Formular ein und sendet es ab. Innerhalb dieses Skripts, soll Skript B (Taschenrechner-Engine) eingebunden werden und die Formal ausrechnen (das funktioniert auch). Ich möchte nun von Skript A auf die Variable (Ergebnis) von Skript B zugreifen aber wie? Mit einem "echo" funktioniert es zwar auch, ist aber nicht Ziel der Sache, weil ich das Ergebnis noch bearbeiten möchte.

 

ComFreek

Mod | @comfreek
Moderator
Du möchtest also Skript B wie ein Webservice nutzen: du schickst eine HTTPS-Anfrage hin mit ein paar Parametern (der zu rechnenden Aufgabe + ggf. Login) und bekommst eine Antwort zurück.

Wenn du mehr Antwortdetails brauchst, musst du Skript B verändern.
Allerdings hört es sich für mich so an, dass Skript B eigentlich HTML ausgibt. Das sollte für einen Webservice nicht der Fall sein; da sollte die Antwort immer maschinenextrahierbar sein (z. B. JSON oder XML).

(Theoretisch kannst du HTML zwar schon auch verwenden, aber meistens meint man mit HTML Daten + Layout; ich appelliere gerade dafür, dass Skript B nur Daten zurückgibt.)