Christian Kruse: GB: Dateizugriff sicher blocken

Beitrag lesen

你好 Felix,

sorry, wenn ich das jetzt so sage, aber es muss sein: bitte lass das. Dein
Provider wird es dir danken. Du hast zwei wirklich boese Sachen gebaut:
einen Busy-Wait und eine Race-Condition.

Zu 1) Du hast das ganze in eine while()-Schleife verpackt, in der du
jedesmal ein file_exists() machst. Das file_exists() wird uebrigens nicht
gecached, aber egal; was ich sagen wollte: du belegst damit zu 100% die
CPU -- fuer uU 5 ganze Sekunden!

Zu 2) Der stat()-Call und das anlegen der Lockdatei sind nicht atomar, es
kann also sein, dass zwei Scripte den gleichen Lock belegen und denken, sie
haetten exklusiven Zugriff. Eine klassische race condition.

再见,
 CK

--
Wenn auf Erden alle das Schoene als schoen erkennen, so ist dadurch schon das Haessliche bestimmt.
http://wwwtech.de/