Mam tablicę nazw plików, a każdy proces musi tworzyć i zapisywać tylko do jednego pliku.Utwórz plik w sposób bezpieczny dla wątków
To właśnie przyszedł do:
foreach ($filenames as $VMidFile) {
if (file_exists($VMidFile)) { // A
continue;
}
$fp = fopen($VMidFile, 'c'); // B
if (!flock($fp, LOCK_EX | LOCK_NB)) { // C
continue;
}
if (!filesize($VMidFile)) { // D
// write to the file;
flock($fp, LOCK_UN);
fclose($fp);
break;
}
flock($fp, LOCK_UN);
fclose($fp); // E
}
Ale nie podoba mi się, że jestem powołując się na filesize
.
Jakieś propozycje, aby zrobić to w inny (lepszy) sposób?
UPD: dodano etykiety łatwo dyskutować
UPD 2: Używam filesize
bo nie widzę innego niezawodny sposób, aby sprawdzić, czy prąd wątek utworzony plik (tak więc jest to jeszcze pusty)
UPD 3: rozwiązanie powinny być wyścigu darmo.
jaki problem próbujesz rozwiązać, wykonując te czynności? – cgTag
@Mathew Foscarini: zarządza zasobami innych firm, które nie mają synchronizacji współbieżności. – zerkms