0
我有一個在PHP中完成的過程。這個過程從互聯網上獲得一個文件,並將其放入一個zip文件中。目標zipfile基於算法,有4096個zip文件。目標zipfile基於處理的URL的哈希值。並行寫入壓縮文件
我有另一個啓動http請願的程序,所以我可以同時運行腳本(大約110個進程)。
我的問題很簡單。由於線程是僞隨機的,因此easly 2線程可以嘗試在同一時刻將文件添加到同一個zip文件。
可能嗎?如果2進程嘗試同時添加文件,該文件是否會損壞?
鎖定文件或類似的東西將是可能的一種可能的解決方案。 我想使用信號量,但閱讀,PHP信號燈不工作在Windows下。
我看到這個可能的解決方案:
if (!function_exists('sem_get')) {
function sem_get($key) { return fopen(__FILE__.'.sem.'.$key, 'w+'); }
function sem_acquire($sem_id) { return flock($sem_id, LOCK_EX); }
function sem_release($sem_id) { return flock($sem_id, LOCK_UN); }
}
不管怎麼說,問題是是否允許將文件從2個或多個不同的PHP proccesses在同一時間添加到壓縮文件。
謝謝。
感謝您的評論。我將使用像我發佈的文件鎖定解決方案。 – hamboy75