Доступ к файлу через PHP - тормозит исполнение кода.

12
M
На сайте с 06.04.2021
Offline
26
299

Здравствуйте.
Есть простейший PHP-код, и только из него состоит PHP-файл, который я периодически (несколько раз в минуту) запрашиваю через Ajax:

$f = fopen(__DIR__ . "/data.dat", "r");
fseek($f, -20, SEEK_END);
$itog = fread($f, 19);
fclose($f);
echo $itog;

Результат в переменной itog я отправляю через Ajax в скрипт, а затем обрабатываю.
Проблема в том, что время от времени (на 20-30 раз) запрос приходит с опозданием в 15-20 секунд! Не могу понять, что не так, откуда эта пауза. Ошибки отлавливать, к сожалению, не умею, поскольку PHP не владею - это не моё, но вдруг страсть как понадобилось считывать последние 19 байт файла. Подскажите, что делать? Куда копать и как избежать этой паузы? Может, это сбой доступа к файлу, но данные-то я в итоге получаю, пусть и с задержкой!

W1
На сайте с 22.01.2021
Offline
286
#1
mikuskov :
Результат в переменной itog я отправляю через Ajax в скрипт, а затем обрабатываю.

Зачем? Обрабатывайте сразу.

mikuskov :
Проблема в том, что время от времени (на 20-30 раз) запрос приходит с опозданием в 15-20 секунд!

...

PHP не владею

PHP не имеет отношения к отправке запроса браузером.

Мой форум - https://webinfo.guru –Там я всегда на связи
M
На сайте с 06.04.2021
Offline
26
#2
webinfo #:

Зачем? Обрабатывайте сразу.

PHP не имеет отношения к отправке запроса браузером.

Извините, но ваш комментарий к сути вопроса тоже не имеет отношения. Не в обиду будь сказано...

W1
На сайте с 22.01.2021
Offline
286
#3
mikuskov #:

Извините, но ваш комментарий к сути вопроса тоже не имеет отношения. Не в обиду будь сказано...

Я не обижаюсь. Потому что комментарий именно по сути написанного. Если Вы хотели написать что-то другое, то пишите, отвечу по возможности.

vitor
На сайте с 16.05.2009
Offline
225
#4
mikuskov :
Может, это сбой доступа к файлу, но данные-то я в итоге получаю, пусть и с задержкой!


Как вариант - упираетесь в лимиты хостинга.  Попробуйте сократить частоту вызова скрипта. А файл большой?

M
На сайте с 06.04.2021
Offline
26
#5
webinfo #:

Я не обижаюсь. Потому что комментарий именно по сути написанного. Если Вы хотели написать что-то другое, то пишите, отвечу по возможности.

Да, вы правы, извините. Я подумал ещё больше и сильнее, и понял это ) Тогда к чёрту PHP - откуда пауза и как с ней бороться?

lutskboy
На сайте с 22.11.2013
Offline
172
#6
вообще странно почему такое происходит. а обычно быстро?  сколько мс? по кнопке отправляете или через интервал само шлет.?
M
На сайте с 17.09.2016
Offline
124
#7
mikuskov #:

Да, вы правы, извините. Я подумал ещё больше и сильнее, и понял это ) Тогда к чёрту PHP - откуда пауза и как с ней бороться?

Это могут быть одновременные запросы

Т.е. возможен некий лимит -> как пример https://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html

Когда накапливается лимит, nginx запросы начинает запросы складывать в очередь, и ожидает освобождения

В скрипт можно дописать логи, чтобы в файл скидывало время запуска скрипта и время окончания, таким образом можно будет отсечь вариант с тормозами ФС на чтении файла (это маловероятно, чтобы ФС так тормозила)

M
На сайте с 06.04.2021
Offline
26
#8
vitor #:


Как вариант - упираетесь в лимиты хостинга.  Попробуйте сократить частоту вызова скрипта. А файл большой?

Там файл прирастает на несколько несчастных байт после каждого такого обращения, то есть я добавляю в конец (может, стоило об этом сказать в топике?!). Изначально он вообще нулевой. Но поскольку там SEEK_END, это, наверное, не важно - при любом размере всё обрабатывается моментально. А мысли про лимиты и частоту обращения - отличные! Спасибо.

M
На сайте с 06.04.2021
Offline
26
#9
lutskboy #:
вообще странно почему такое происходит. а обычно быстро?  сколько мс? по кнопке отправляете или через интервал само шлет.?

Обычно моментально. Шлёт само.

M
На сайте с 06.04.2021
Offline
26
#10
Mobiaaa #:

Это могут быть одновременные запросы

Т.е. возможен некий лимит -> как пример https://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html

Когда накапливается лимит, nginx запросы начинает запросы складывать в очередь, и ожидает освобождения

В скрипт можно дописать логи, чтобы в файл скидывало время запуска скрипта и время окончания, таким образом можно будет отсечь вариант с тормозами ФС на чтении файла (это маловероятно, чтобы ФС так тормозила)

Спасибо за ответ. Очень ценные мысли и идеи!

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий