1 Востаннє редагувалося nazar (21.02.2016 11:22:37)

Тема: Cron надто часто викликає скрипт (php-скрипт).

Доброго дня.

Є raspberry p (ОС Debian), в cron’і завдання - кожні 5 хвилин викликати php-скрипт. Викликає, все працює.
Проблема: скрипт спрацьовує надто часто, є моменти спрацювання не по графіку.

Сам скрипт простенький тест, додає дату в текстовий файл.

Cron:

*/5 * * * * /usr/bin/wget -O - - -q -t 1 http://localhost/date.php

php-cкрипт:

$today=date("Y-m-d H:i:s");

$fh=fopen("date.txt","a") or die ("cant open file");
fwrite($fh,$today."\n");
fclose($fh);
exit();

Результат:

2016-02-21 09:35:01
2016-02-21 09:40:01
2016-02-21 09:41:44
2016-02-21 09:45:01
2016-02-21 09:50:01
2016-02-21 09:51:07
2016-02-21 09:55:01
2016-02-21 10:00:01
2016-02-21 10:00:35
2016-02-21 10:05:01
2016-02-21 10:10:01

Записи з закінченням на "01" - результат правильного спрацювання, як тільки стала нова хвилина.
Записи, відмічені кольором - власне, сабж. До речі, той же скрипт в іншому лінуксі працює без нарікань.
Баш’еві скрипти теж працюють коректно.
Схильний думати, що причина десь в налаштуваннях apache або php.

Порадьте, будь ласка, в якому напрямку шукати.
Дякую)

2

Re: Cron надто часто викликає скрипт (php-скрипт).

nazar написав:

Доброго дня.

Є raspberry p (ОС Debian), в cron’і завдання - кожні 5 хвилин викликати php-скрипт. Викликає, все працює.
Проблема: скрипт спрацьовує надто часто, є моменти спрацювання не по графіку.

Сам скрипт простенький тест, додає дату в текстовий файл.

Cron:

*/5 * * * * /usr/bin/wget -O - - -q -t 1 http://localhost/date.php

php-cкрипт:

$today=date("Y-m-d H:i:s");

$fh=fopen("date.txt","a") or die ("cant open file");
fwrite($fh,$today."\n");
fclose($fh);
exit();

Результат:

2016-02-21 09:35:01
2016-02-21 09:40:01
2016-02-21 09:41:44
2016-02-21 09:45:01
2016-02-21 09:50:01
2016-02-21 09:51:07
2016-02-21 09:55:01
2016-02-21 10:00:01
2016-02-21 10:00:35
2016-02-21 10:05:01
2016-02-21 10:10:01

Записи з закінченням на "01" - результат правильного спрацювання, як тільки стала нова хвилина.
Записи, відмічені кольором - власне, сабж. До речі, той же скрипт в іншому лінуксі працює без нарікань.
Баш’еві скрипти теж працюють коректно.
Схильний думати, що причина десь в налаштуваннях apache або php.

Порадьте, будь ласка, в якому напрямку шукати.
Дякую)

Почну з того що cron не спрацьовує завжди з точністю до секунди, але то вже таке.
А загалом чому скрипт не викликаєте просто командою php -f path/to/file? Радив би подивитися цю тему.

Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..
Подякували: nazar1

3

Re: Cron надто часто викликає скрипт (php-скрипт).

чому скрипт не викликаєте просто командою php -f path/to/file?

бо спершу щось наплутав зі шляхами, і наґуґлив спосіб через wget. Він до речі, досить поширений, як виявилось.

Спробував ще раз php -f path/to/file, працює з тим же результатом:

2016-02-21 11:30:02
2016-02-21 11:34:34
2016-02-21 11:35:01
2016-02-21 11:40:02
2016-02-21 11:44:08
2016-02-21 11:45:01

4

Re: Cron надто часто викликає скрипт (php-скрипт).

nazar написав:

чому скрипт не викликаєте просто командою php -f path/to/file?

бо спершу щось наплутав зі шляхами, і наґуґлив спосіб через wget. Він до речі, досить поширений, як виявилось.

Спробував ще раз php -f path/to/file, працює з тим же результатом:

2016-02-21 11:30:02
2016-02-21 11:34:34
2016-02-21 11:35:01
2016-02-21 11:40:02
2016-02-21 11:44:08
2016-02-21 11:45:01

Я згадав що за проблему мав з кратністю... там якась фішка з округленням часу.. одним словом вам треба замінити

*/5

на просто перерахунок часових інтервалів

5,10,15,20,25,30,35,40,45,50,55,0

Це пов'язано з тим, що systemd може запускати cron з точністю не до секунди, щоб збалансувати рівномірно навантаження на проц, в той самий час у cron є недолік в системі округлення часу через що він через такі незначні зміни може двічі відпрацювати один розклад з інтервалом менше хвилини. Доречі, cron запускається щохвилини, перевіряє чи є що зробити по графіку і йде чекати, саме тому глюк в округленні стає причиною не запуску чи запуску двічі з коротким інтервалом.

Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

5

Re: Cron надто часто викликає скрипт (php-скрипт).

бо спершу щось наплутав зі шляхами, і наґуґлив спосіб через wget. Він до речі, досить поширений, як виявилось.

він зовсім не поширений :))

Яку саме команду ви додали в крон?
+ гляньте які команди уже є

crontab -l

6 Востаннє редагувалося nazar (21.02.2016 18:56:14)

Re: Cron надто часто викликає скрипт (php-скрипт).

треба замінити  */5 на 5,10,15,20,25,30,35,40,45,50,55,0

не працює, на жаль. Те саме, що й було.

Яку саме команду ви додали в крон?

5,10,15,20,25,30,35,40,45,50,55,0 * * * * php -f /home/.../date.php

гляньте які команди уже є

Сторонніх завдань немає. В кронах інших користувачів також завдань немає.
Живлення достатнє, через безперебійник (думав, короткочасні просадки напруги так впливають, але ні).
Распберрі по суті нічим не завантажена, крім апачу-mysql-php нічого не крутиться.

Коли змінити період опитування (з 5 хв. на 10), то зміниться частота глюків - раніше був 1 глюк на 2 правильних, тепер - 1 глюк на 1 правильне спрацювання.
Якщо крон криво працює з часом, тоді дивно, чому проблема помітна тільки з php-скриптом, - такий же баш-евий працює коректно і безпомилково.

7

Re: Cron надто часто викликає скрипт (php-скрипт).

Дивний інтервал між глюками. Яка у вас завантаженість системи. І спробуйте ще в рнр скрипті просто виводити дату

echo date("Y-m-d H:i:s");

і логувати цю всю штуку через крон

*/5 * * * * php script.php > /tmp/script-log.log 2>&1
Подякували: koala, nazar, HetmanNet3

8

Re: Cron надто часто викликає скрипт (php-скрипт).

Завантаженість системи невелика, 2% CPU, 30% MEM.

Якщо дату просто скерувати в лог, то все працює чудово. Дякую за пораду )

Але чому так? чим скрипт в 2 рядки відрізняється від 5-рядкового?
Зверненням до файлу - але там нічого неймовірного.
Нічого не розумію...

Буду радий почути вашу думку, чому воно так працює.

9

Re: Cron надто часто викликає скрипт (php-скрипт).

Можливо у вас проблема з файловою системою і fopen довго відпрацьовує або щось у тому дусі. Локи і інше.
Яка у вас кінцева мета роботи скрипту? Можливо можна щось придумати ;)

10

Re: Cron надто часто викликає скрипт (php-скрипт).

та власне хотів побавитись з "розумним будинком", щоб скрипти виводили деякі події на сторінку і в лог.
Дякую за допомогу )

11

Re: Cron надто часто викликає скрипт (php-скрипт).

funivan написав:

Можливо у вас проблема з файловою системою і fopen довго відпрацьовує або щось у тому дусі. Локи і інше.
Яка у вас кінцева мета роботи скрипту? Можливо можна щось придумати ;)

Для RaspberryPi то характерна затримка при роботі з файлами.. але правда не знав що то має такий вплив на cron. Хоча дивно, таке враження що коли пише php скрипт йде запис прямий на карту пам'яті, а не так зазвичай в пам'ять звідки ядро саме потім поступово на карту пам'яті.

Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

12

Re: Cron надто часто викликає скрипт (php-скрипт).

А є десь пропуски якихось проміжків чи просто нові появляються ні звідки?

13

Re: Cron надто часто викликає скрипт (php-скрипт).

Vo_Vik написав:

А є десь пропуски якихось проміжків чи просто нові появляються ні звідки?

Нові на хвилину раніше чи на хвилину пізніше.

Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

14

Re: Cron надто часто викликає скрипт (php-скрипт).

А з файлом який не видимий через localhost пробували? може це локалхост звідкісь ще дьоргається.

15

Re: Cron надто часто викликає скрипт (php-скрипт).

А є десь пропуски якихось проміжків чи просто нові появляються ні звідки?

пропусків немає. Все, що має спрацювати по графіку, спрацьовує. Глюки виникають додатково, і не зсувають графік, не ламають. Просто доповнюють.

з файлом який не видимий через localhost пробували?

ні, не пробував. Пізніше спробую, відпишусь. Дякую за турботу )

16

Re: Cron надто часто викликає скрипт (php-скрипт).

та власне хотів побавитись з "розумним будинком", щоб скрипти виводили деякі події на сторінку і в лог.

напишіть скрипт який висить без перестану у памяті і щось дописує у лог.
У крон добавте задачу яка буде перевіряти скритп і якщо не запущений - запускати.

Це як варіант.