Phantomjs Server von PHP starten und auf seine Antwort warten

8

Ich wollte einen phantomjs-Server von meinem php-Skript ausführen, dann eine curl-Anfrage machen und seine Antwort lesen (was in der finalen Version einen Pfad zum generierten PDF gibt). Wenn phantomjs Server-Datei von der Konsole aus ausgeführt wird und dann zu ihrer Adresse im Browser navigiert wird, funktioniert alles einwandfrei. Das ist die Datei server.js:

%Vor%

Im Grunde öffne ich localhost-Adressen, wechsle den Inhalt der Seite auf meine HTML-Zeichenfolge und speichere dann die gerenderte Seite als PDF.

Jetzt kommt mein PHP-Skript:

%Vor%

Auch hier keine Magie. Ich führe den phantomjs server.js -Befehl im Terminal aus, und nach 5s (Zeit, um den Server zu initialisieren) führe eine cellPOST-Anfrage an ihn aus.
Jetzt habe ich zwei Fälle:

  • Wenn ich PHP-Skript von der Konsole mit php script.php starte, startet der Server, da ich sehen kann, dass der Prozess läuft und das Icon im Dock sichtbar ist, aber ich bekomme nie eine Antwort von ihm und die PDF wird nicht erstellt.
  • Wenn ich das Skript über den Browser ausführe, ist das Symbol im Dock nicht sichtbar, so dass der Server auf andere Weise gestartet wird. Noch keine Antwort noch pdf.

Kann irgendjemand etwas in meinem Code falsch sehen oder an irgendwelche Möglichkeiten der Fehlersuche denken?

Testen auf OSX 10.7, php 5.3.6, phantomjs neuesten. Benutzer _www den Server laufen hat Administratorrechte, Ordner, wo ich schreibe Dateien wurden auf 777 chmodiert.

    
mike_hornbeck 18.05.2012, 10:54
quelle

1 Antwort

3

Sie haben mehrere Probleme:

  1. phantomjs wird im Vordergrund gestartet, was bedeutet, dass Ihr PHP-Skript stoppt / ruht, bis phantomjs stoppt. Starten Sie den phantomjs-Dienst, oder führen Sie ihn im Hintergrund aus. Siehe " php führt einen Hintergrundprozess " für ein HowTo aus.
  2. Der Webserver kann wahrscheinlich nicht auf den "grafischen Teil" Ihres Betriebssystems zugreifen, was bedeutet, dass er nicht mit Ihrem Desktop interagieren kann. Deshalb erscheint das Symbol nicht, aber phantomjs sollte immer noch starten.
cweiske 24.05.2012 10:50
quelle

Tags und Links