В PHP, как я могу получить fopen очень быстро при открытии локального файла? - PullRequest
1 голос
/ 21 сентября 2010

У меня проблема с PHP, когда я очень часто пишу в файл, а иногда открытие этого файла занимает много времени.Полное описание здесь:

блокировка fopen-файлов в PHP (тип ситуации чтения / записи)

Мой вопрос: как я могу получить fopen для таймаута, скажем, 50мс.Я посмотрел на stream-context-create , но похоже, что это для HTTP или, по крайней мере, если он будет работать для локальных файлов, я не уверен, как указать параметр в массиве.

Есть идеи?

Спасибо!
Даниил

Ответы [ 2 ]

3 голосов
/ 21 сентября 2010

Я не уверен, что вы пытаетесь здесь, но на некоторых платформах (но не Windows) вы можете открыть файл в неблокирующем режиме с флагом n:

$f = fopen("/tmp/foo/bar", "wn+");

Это должно немедленно вернуться. Тогда вы, вероятно, можете использовать stream_select с таймаутом 50 мс.

Я говорю «вероятно», потому что этот флаг не задокументирован.

0 голосов
/ 21 сентября 2010

изменение переменной default_socket_timeout в php.ini на '1', это поможет?

...