Ядро моего приложения извлекает контент, используя 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