Mamy serwer FreeBSD z sambą, do którego pracownicy kopiują pliki obrazów, które następnie są przesyłane na nasze serwery sieciowe (w ten sposób nie muszą się oni martwić o ftp). Czasami, jeśli skrypt wysyłania działa w tym samym czasie, co kopiowanie plików, może przesłać niekompletny plik.Czy istnieje lepszy sposób sprawdzenia, czy plik jest zapisywany?
Naprawiliśmy to, pobierając listę plików wraz z rozmiarami plików, a następnie czekając 5 sekund i ponownie sprawdzając rozmiary plików. Jeśli rozmiary są zgodne, to zapisz je do przesłania, jeśli się nie zgadzają, sprawdzają ponownie za 5 sekund.
To wydaje się dziwnym sposobem sprawdzenia, czy pliki są zapisywane. czy istnieje lepszy, prostszy sposób robienia tego?
'if (! Flock ($ fp, LOCK_EX | LOCK_NB)) {// plik jest zablokowany do zapisu'? – DaveRandom
'flock()' może? –
nie jestem pewien, czy 'flock()' i zamki Samaba będą się nawzajem widzieć niezawodnie - miał kilka problemów tam lata temu –