Mailinglisten-Archive |
Hallo Liste, ich habe folgendes Problem (LINUX 2.2.16, mysql 3.23.32): Ein Prozeß soll Einträge in einer speziellen Tabelle bearbeiten und einen Eintrag nach Bearbeitung löschen. Ist die Tabelle leer, so hat der Prozeß auch keine anderen Aufgaben. Andere Prozesse schreiben dann wieder Einträge in die Tabelle, die dann "sofort" bearbeitet werden sollen. Prinzipiell wäre das ein Problem für einen Trigger, den es aber unter mysql (noch) nicht gibt. Folgende Möglichkeiten habe ich schon untersucht, bin aber noch nicht recht weitergekommen: a) Prinzipdarstellund der Softwarestruktur(!) while true select count(*) from table; if count == 0 then sleep 1 else do work end while Ich habe die Sache mit perl untersucht; der Traffic ist nicht überwältigend, aber unschön. Überzeugen würde mich eine Lösung, bei der ich meinen Prozeß "schlafen" legen kann und der erst beim Eintreffen von neuen Einträgen wieder aufgeweckt wird. b) Funktionen get_lock() und release_lock() Problem hierbei ist, daß viele Prozesse in die Tabelle schreiben können und eine solche Sperre aber nur von dem Prozeß aufzuheben ist, der die Sperre ausgelöst hat; also genau andersherum, als ich es bräuchte. c) SQL-Kommandos lock table etc. Prinzipiell das gleiche Problem wie bei b). Hat irgendjemand eine Idee? Vielen Dank! Gruß Alexander --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive