phpbar.de logo

Mailinglisten-Archive

"Trigger"

"Trigger"

Alexander Friess mysql_(at)_lists.phpcenter.de
Fri, 6 Apr 2001 13:54:32 +0200


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