Ich habe eine Reihe von Foren gelesen und immer noch kein Glück .. Ich habe eine PHP-Datei, die eine Python-Datei (liveSensor.py) ausführt. Es startet die Py-Datei einmal und stoppt, wie kann ich die Datei im Hintergrund offen halten? Wenn ich sudo python liveSensor.py in der Kommandozeile starte, läuft es auch nur einmal, aber wenn ich sudo python -i liveSensor.py setze, bleibt es offen. Wie mache ich das in PHP?Wie behalte ich ein Python-Skript fortlaufend?
PHP-Datei -
<?php
$try = exec('python sensor.py');
print_r ($try);
?>
In der Datei liveSensor.py Ich habe 2 Schwingungssensoren, die erkannt werden, und dann diese Informationen in sqlite vorbei, dann ruft meine PHP-Datei, dass Daten und Ajax I darstellen kann es. All dies funktioniert gut, außer dass die py-Datei ständig starten ..
py Skript -
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
import sqlite3
KnockPin = 12
ShockPin = 13
inning = 1
runs = 0
strikes = 0
balls = 0
print ("Welcome to Bases Loaded")
def setstr():
global strikes
strikes = 0
global balls
balls = 0
def setup():
GPIO.setmode(GPIO.BOARD)
GPIO.setup(KnockPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(ShockPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def knock(ev=None):
with sqlite3.connect('basesLoaded.db') as conn:
global strikes
global inning
strikes += 1
if strikes ==0:
pass
elif strikes == 1:
conn.execute("UPDATE bl set STRIKE = 1 WHERE ID =1");
print ("Strike 1 :", conn.total_changes);
elif strikes == 2:
conn.execute("UPDATE bl set STRIKE = 2 WHERE ID=1");
print ("Strike 2 :", conn.total_changes);
elif strikes == 3:
global inning
inning +=1
conn.execute("UPDATE bl set STRIKE = 0 WHERE ID=1");
conn.execute("UPDATE bl set INNING = inning WHERE ID=1");
print ("Strike 3 Your Out :", conn.total_changes);
setstr()
print ("Inning Number :", inning);
def shock(ev=None):
with sqlite3.connect('basesLoaded.db') as conn:
global balls
balls += 1
if balls ==0:
pass
elif balls == 1:
conn.execute("UPDATE bl set BALL = 1 WHERE ID=1");
conn.commit()
print ("Ball 1 :", conn.total_changes);
elif balls == 2:
conn.execute("UPDATE bl set BALL = 2 WHERE ID=1");
conn.commit()
print ("Ball 2 :", conn.total_changes);
elif balls == 3:
conn.execute("UPDATE bl set BALL = 3 WHERE ID=1");
conn.commit()
print ("Ball 3 :", conn.total_changes);
elif balls == 4:
global runs
runs += 1
conn.execute("UPDATE bl set BALL = 0 WHERE ID=1");
conn.execute("UPDATE bl set RUN = 'runs' WHERE ID=1");
conn.commit()
print ("Run Scored! score is :", runs);
setstr()
def register_callbacks():
GPIO.add_event_detect(ShockPin, GPIO.FALLING, callback=shock, bouncetime=2500)
GPIO.add_event_detect(KnockPin, GPIO.FALLING, callback=knock, bouncetime=2500)
if __name__ == '__main__':
try:
setup()
register_callbacks()
except KeyboardInterrupt:
destroy()
Das gibt mein ‚Welcome to Bases Loaded‘ Meldung im Browser, aber die py-Datei wird nicht geöffnet bleiben die erkennen Sensoren.
Sie sollten (offensichtlich?) Bieten mehr Informationen darüber, was LiveSensor.py tatsächlich tun. – Aif
Python-Daemon: http://StackOverflow.com/search?q=python+Daemon und warum würden Sie es mit PHP starten? –
Ich starte es mit php als die Art und Weise, wie das Spiel eingerichtet wird, ist mit meinem Tablet als Anzeiger von den Krügen Hügel. Mit Apache2 kann ich also auf meinem lokalen Netzwerk streamen. Auch ich werde schließlich die Fähigkeit haben, von mehreren Spielen zu wählen, die ich in der Zukunft programmieren werde. Ich bin gerade bequemer, die Schnittstelle in PHP/html zu bauen –