Nette\IO\SafeStream a synchronizace

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jost125
Člen | 7
+
0
-

Zdravím, z dokumentace safe streamu (https://doc.nette.org/cs/safe-stream) mi úplně nevyplnulo, jesti při zavolání dvou paralelních požadavků dojde při následujícím kódu k ‚zamknutí‘ ‚druhého‘ procesu do doby, kdy bude soubor uzavřen.

<?php
$handle = fopen('safe://' . $filepath, 'w');
fwrite($handle, '1');

// tady dělám něco výpočetně složitýho a
// co budu kešovat a nechci aby se mi mezitím spustil další proces
// protože ten by to znovu počítal a místo toho bych radši
// aby druhý proces si to už jen přečetl z keše

fclose($handle);
?>

Pokud by tomu tak bylo, dalo by se to využít k synchronizaci procesů (což potřebuji), pokud ne, nevíte někdo o nějakém dobrém způsobu, jak udělat v php něco na způsob semaforu mezi procesy?

Ondřej Brejla
Člen | 746
+
0
-

Třeba ti pomůže PHP: Semaphore

jost125
Člen | 7
+
0
-

Díky, přesně tohle jsem hledal.

EDIT: každopádně když už jsem to nakousl, chová se safe stream jako blokující? Nebo prostě jen zaručuje atomicitu operace se souborem?

Editoval jost125 (17. 2. 2011 15:42)