PHP-Skript ohne Browser ausführen möglich?

Alice

Erfahrenes Mitglied
Hallo Zusammen. :)

Ich habe folgende Frage.

Ich möchte in einem Skript ein Imagick Befehl (nicht exec) ausführen, jedoch gibt es dabei Probleme. Die Grafik ist z.B. komplett weiss.
Ich habe das Problem auch gefunden. Es liegt daran, dass das Skript mit meiner Forensoftware (vBulletin) verknüft ist. Es wird nähmlich die Global.php von vBulletin geladen und DAS MUSS die Fehler verursachen. Denn ohne vBulletin Verknüpfung funktioniert es perfekt.

Um das Problem nun zu lösen habe ich folgende Idee:
Ich sende im Skript einen Befehl an eine andere PHP-Datei und die macht was ich möchte.

create_a_svg.php
PHP:
...
...
...

$fp = fopen("http://www.meineseite.de/makesvg/svg2png.php?var=xxx");
         fclose($fp);

...
...
...

svg2png.php
PHP:
$var = $_GET["var"];

$thumb = new Imagick();
$thumb->readImage($var.'svg');
$thumb->writeImage($var.'png');
$thumb->clear();
$thumb->destroy();

Kann das funktionieren? Gibt es etwas zu beachten? Eine etwas bessere Möglichkeit?

Gibt es eine Möglich zu überwachen ob "der Befehl" in svg2png.php schon fertig ausgeführt wurde?
 
Zuletzt bearbeitet:
Mit fopen wird's nicht funktionieren, weil es einfach nur die Datei öffnet. Entweder fsockopen oder eventuell hiermit:
PHP:
`php meinscript.php`;
Keine Ahnung ob's klappt.
 
Ich habe es nun zum laufen bekommen.

PHP:
$fp = fopen("http://www.meineseite.de/makesvg/svg2png.php?var=xxx", "r");
         fclose($fp);

Das Problem (!) ist leider dass das Skript fast fertig ist, die SVG-Grafik aber etwas länger zum erstellen braucht.

Hat jemand eine Idee wie ich dieses Problem lösen kann? Vielleicht eine Schleife die solange prüft ob die Grafik fertig ist und erst dann weiter arbeitet?
 
Ich weiss nicht? Kannst du mir bitte ein Beispiel zeigen?

Das Problem ist das ganze muss in PHP-PUR (also nur PHP) funktionieren.
 
Wie wäre es, wenn du einfach [phpf]include[/phpf] oder [phpf]require[/phpf] nutzt, und den Code in svg2png.php in eine Funktion packst?
PHP:
/* svn2png.php */
function bl5000_func($var)
{
  $thumb = new Imagick();
  $thumb->readImage($var.'svg');
  $thumb->writeImage($var.'png');
  $thumb->clear();
  $thumb->destroy();  
}
/* END: svn2png.php */

/* create_a_svg.php */
require_once('svn2png.php');

// $_GET['var'] ggf. vorher "entschärfen"
bl5000_func( $_GET['var'] ); 
/* END: create_a_svg.php */
 
Bitte nicht schimpfen aber wie könnte ich denn die Funktion "bl5000_func" direkt im Skript auslösen? Vielleicht klappt es dann ja auch so. Zumindest wäre es ein versuch Wert.
 
@ComFreek:

Wie wird denn $var übergeben? Ich kriege es nicht zum laufen.

Edit:

Die Variable $var in der Funktion kennt den Dateinamen nicht. $var ist also nicht gesetzt.

?
 
Zuletzt bearbeitet:
$var ist einfach ein Parameter dieser Funktion. Den Wert dieses Parameters übergibst du beim Funktionsaufruf, hier $_GET['var'];.

Ich habe deinen Code nur umstrukturiert - sollte also genauso laufen!
 
Zurück