Блокировка файлов для PHP - PullRequest
0 голосов
/ 15 мая 2019

Ядро моего приложения извлекает контент, используя curl, и я хочу кэшировать контент, который часто выбирается. Я открываю файл, используя в конце заголовков мой обратный вызов CURLOPT_HEADERFUNCTION, и записываю данные в кеш вCURLOPT_WRITEFUNCTION callback. Затем я закрою файл в конце запроса (байт == content_length)

file_put_contents крайне неэффективен в ситуации, продемонстрированной этой веткой .

Теперь предположим, что 2 пользователя хотят извлечь один и тот же контент (процесс A и B). Процесс подсчета A заблокировал файл и выполняет запись.

1.Может ли процесс B все еще читать из файла?Операция должна быть LOCK_EX|LOCK_SH, если я не ошибаюсь.

2.Если процессы могут читать или записывать в один и тот же файл одновременно, что происходит, когда процесс B уже прочитал все данные, ждет ли ончтобы процесс А записал в файл?.

Дайте мне знать, как я могу улучшить свою стратегию.

PS Я на ОС Centos 7

...