나는 PHP로 처리를 마쳤습니다. 이 프로세스는 인터넷에서 파일을 가져 와서 zip 파일에 저장합니다. 대상 zip 파일은 알고리즘을 기반으로하며 4096 개의 zip 파일이 있습니다. 대상 zip 파일은 처리 된 URL의 해시를 기반으로합니다.zip 파일로의 동시 쓰기
나는 또 다른 프로그램을 실행하여 http 청원서를 작성하므로 스크립트를 동시에 실행할 수 있습니다 (약 110 개의 프로세스).
내 질문에 간단합니다. 쓰레드는 의사 난수 (pseudorandom)이기 때문에 easly 2 개의 쓰레드는 같은 순간에 같은 zip 파일에 파일을 추가 할 수 있습니다.
가능합니까? 2 개의 프로세스가 동시에 파일을 추가하려고하면 파일이 손상됩니까?
파일을 잠그면 가능한 해결책이 될 수 있습니다. 세마포어를 사용하려고 생각했지만 독서, PHP 세마포어는 윈도우에서 작동하지 않습니다.
나는이 가능한 솔루션을 보았다 :이 동시에 2 개 이상의 서로 다른 PHP는 proccesses에서 zip 파일에 파일을 추가 할 수있는 경우
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); }
}
어쨌든 질문입니다.
감사합니다.
의견을 보내 주셔서 감사합니다. 내가 게시 한 것과 같은 파일 잠금 솔루션을 사용합니다. – hamboy75