2009-07-09 14 views
5

Jak zrobić python (lokalny) uruchomić skrypt php na zdalnym serwerze?Uruchom (zdalny) skrypt php z (lokalnego) skryptu pythonowego

Nie chcę przetwarzać jego danych wyjściowych za pomocą skryptu Pythona lub czegokolwiek, po prostu uruchom go, a tymczasem zakończ pythona (podczas gdy skrypt php będzie działał i wykonał swoje zadanie).

edit: Co usiłuję osiągnąć:

  • skrypt python połączy się z serwerem FTP skrypt serwera i załadowania php (mam już tę część kodu)
  • uruchamia skrypt php (to część kodu, o który pytam)
  • skrypt python nadal robi coś innego
  • skrypt python kończy się (ale prawdopodobnie skrypt PHP nadal nie zakończył pracy, więc nie chcę, aby zakończył się, gdy zakończy się python)
  • skrypt python zamknąć, skrypt php nadal kontynuuje swoje zadanie

(I NIE zamiar zrobić coś z wyjściem php w python - python po prostu musi załadować skrypt php i sprawiają, że rozpoczęcie pracy)

Mam nadzieję, że teraz jestem bardziej zrozumiały. Przepraszam, jeśli moje pytanie nie było wystarczająco szczegółowe.

inna edycja: Należy również pamiętać, że nie mam dostępu do powłoki na zdalnym serwerze. Mam tylko ftp i panel kontrolny (cpanel); próbuje użyć do tego ftp.

+0

ja nie chcę go dołączyć i użyć jego danych wyjściowych, chcę zrobić to samo, co dzieje się, gdy użytkownik wprowadzi adres skryptu php w przeglądarce – Phil

+0

@Phil, proszę zaktualizować swoje pytanie, aby wyjaśnić to w pełni. Komentarz nie ma prawie żadnego sensu. Python nie jest przeglądarką i nie renderuje HTML w taki sposób, jak przeglądarka. Podaj bardziej szczegółowe wyjaśnienie, co chcesz zrobić. –

+0

ok, zredagowałem to. nie chcę niczego renderować. Nie jestem pewien, czy poprawnie podchodzę do problemu, ale napisałem listę tego, co chcę zrobić - jeśli mogę to osiągnąć inaczej, nie krępuj się komentować. – Phil

Odpowiedz

4

Jeśli python jest na innej maszynie fizycznej niż skryptu PHP, chciałbym upewnić się, że skrypt PHP jest dostępny internetowy i korzystać urllib2 zadzwonić do tego adresu URL

import urllib2 

urllib2.urlopen("http://remotehost.com/myscript.php") 
+0

Wreszcie coś pożytecznego! Będę musiał sprawdzić, czy to działa, ale jeśli to działa, to dokładnie to, co chcę zrobić. Dziękuję Ci. – Phil

5
os.system("php yourscript.php") 

Inną alternatywą byłoby:

# will return new process' id 
os.spawnl(os.P_NOWAIT, "php yourscript.php") 

Można sprawdzić całą dokumentację here modułu os.

+0

ok, czy to zabije mój skrypt php, jeśli wyjdę z Pythona, a skrypt PHP będzie działał? – Phil

+0

Dlaczego muszę wpisać 15 znaków, gdy poprawna odpowiedź brzmi "tak"? :-) Tak: Tak, będzie. –

+0

ok ... zobacz moje pytanie edytuj - szukam czegoś, co pozwoli skryptowi php kontynuować swoje zadanie, nawet jeśli python skończy już – Phil

0

Parafrazuję odpowiedź na How do I include a PHP script in Python?.

import subprocess 

def php(script_path): 
    p = subprocess.Popen(['php', script_path]) 
+0

Dzięki. Przepraszamy za pytanie typu noob, ale skoro jest on na serwerze zdalnym, jak określić ścieżkę? Czy to może być adres URL? Czy skrypt php będzie działał dalej, nawet jeśli pyton zostanie zamknięty? – Phil

Powiązane problemy