pcntl_fork unter Windows? oder alternative Lösungsvorschläge

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • pcntl_fork unter Windows? oder alternative Lösungsvorschläge

    Hallo Leute, nachdem meine Internetrecherche langsam an einen toten Punkt angelangt bin, traue ich mich mal mein Problemchen selber zu schildern.

    Zur Situation: Ich arbeite mich seit 2 Wochen in PHP und MySQL ein da ich für eine Studienarbeit (ich bin kein Informatiker) ein Wirtschaftsplanspiel programmieren soll. Warum gerade PHP und MySQL? Im Gegensatz zu vielen anderen Planspielen sollen sich hier die einzelnen Gruppen möglichst "in Echtzeit" gegenseitig manipulieren können. Es läuft also letzendlich auf ein kleines Browsergame hinaus... (bitte keine "ohmeingottlassesseinduwirstnurunglücklichdamit"-Posts, die hatte ich schon )

    Die Situation in der ich gerade Stecke sind Prozesse, die erst nach einer Zeit X fertig sein sollen, so zum Beispiel die Lieferzeit einer Fracht o.ä. Ich persönlich hatte jetzt erstmal daran gedacht, einen Prozess zu forken der im Hintergrund die x sekunden oder was auch immer rumsleept. Das Problem auf das ich jetzt gestoßen bin und für das ich noch keine richtige Lösung gefunden habe: forken läuft nur unter UNIX-Systemen soweit ich das verstanden hab. Ich hab zwar ne php-binary von 2003 gefunden mit der das laufen soll, aber die war noch für php4.
    Meine erste Frage lautet also: Kann man mit php5 auf Windows forken o.ä. und wie geht das?

    Ich hab mich natürlich auch noch über Crons ein bisschen schlau gemacht, allerdings würd ich ungern einfach nen cron bei mir einrichten, der alle paar Sekunden schaut ob was gemacht werden soll. Momentan nutz ich meinen Laptop fürs development und da ich nicht die große ahnung hab was passiert wenn ich den plötzlich mit diversen crons zumülle, wollte ich da erstmal die Finger von lassen bevor ich fundierte Tips bekommen hab.
    Es wäre natürlich besser wenn ich mit PHP Crons schreiben und wieder löschen könnte, allerdings habe ich auch dafür eigentlich nur UNIX-Beispiele gefunden.
    Meine zweite Frage lautet somit: Kann man mit PHP Crons unter Windows schreiben und löschen und wie geht das?

    Dann hätte ich noch eine dritte Frage: Hättet ihr eine komplett andere Idee wie man das machen könnte/sollte?


    Generelle Informationen:
    Ich nutze auf Windows Vista 32bit EasyPHP 5.3.3. als Development-Oberfläche. (bitte kein Vista-Rant , ich sitz hier in Südafrika und hab keine externe Festplatte zur Verfügung um nen Backup zu machen und dann Windows7 drauf zu ziehen)

    Vielen Dank schonmal
    Martin

  • #2
    Du willst Prozesse erzeugen, die eine bestimmte Zeit nichts tun (sleep) und dann ... ja was dann? Was macht so ein Prozess nach Ablauf der Zeit?
    Das Beispiel Frachtlieferung legt nahe, dass lediglich ein Eintrag in der DB gemacht wird. Nachfolgend gehe ich davon aus, dass alle deine zu forkenden Prozesse ähnliche funktionieren und nach Ablauf der Zeit lediglich irgendwelche kleinen Datenmanipulationen vornehmen.

    Dafür brauchst du keine Prozesse forken! An der Stelle im Programm, wo du eigentlich einen Prozess starten würdest, kannst du auch gleich die Datenmanipulation vornehmen, die dieser Prozess später machen würde. Aber dabei vermerkst du irgendwie*, dass diese Daten erst ab Zeitpunkt X = NOW() + Sleep-Interval gültig sind.

    *) Du kannst die Daten direkt in der vorgesehenen Tabelle manipulieren und in einer zusätzlichen Spalte einen Zeitstempel speichern, ab dem die Daten "gültig" sind. Alle Abfragen beschränkst du dann mit "WHERE Zeitstempel >= NOW()". Oder du schiebst die Daten z.B. in Form einer fertigen SQL-Query "INSERT INTO freight ..." in eine zusätzliche Tabelle jobs(query, when). Ein Cronjob holt sich regelmäßig mit "SELECT query FROM jobs WHERE when <= NOW()" alle anstehenden Aufgaben, führt query aus und entfernt den Datensatz (oder setzt ein Erledigt-Flag in einer weiteren Spalte). Dazu brauchst du nur einen einzigen Cronjob und der macht, was sonst direkt im Script stattfinden würde. Deine Maschine wird das locker verkraften. ;-)

    Kommentar


    • #3
      Joo, vielen Dank!! Damit kann ich arbeiten!

      Kommentar

      Lädt...
      X