Я работаю над веб-приложением PHP, моим первым веб-приложением. Один из процессов должен скопировать некоторые текстовые файлы в целевой каталог. В каталоге назначения он откроет текстовые файлы и покажет вывод в веб-браузере. Мне интересно, что произойдет, если два пользователя одновременно инициируют процесс? Поскольку файлы ДОЛЖНЫ быть скопированы в каталог назначения и прочитаны оттуда. Я каждый раз создаю уникальный каталог назначения? Как это правильно сделано?
Вы можете создать уникальный каталог, все зависит от вашей цели. Вы хотите разрешить одновременному выполнению двух разных пользователей?
Базы данных обычно полезны в этих ситуациях, потому что они созданы для одновременной работы и таблицы функций или даже блокировки строк.
В этом случае, если вы хотите, чтобы второй пользователь не запускал процесс в одно и то же время, вы можете использовать файл блокировки:
Если файл блокировки существует, подождите, пока он не будет отсоединен (удален), например:
while (file_exists('file.lock')) {
usleep(100000); // sleep 100ms
}
touch('file.lock');
// Execute processes here
unlink('file.lock');
Файлы блокировки обычно используются в файловых системах и приложениях, чтобы пользователи не могли одновременно изменять файл или запускать более одного экземпляра.