|
|
|
| есть файл в корне dvig.php, не знаю как из "крона" запускать его раз в 5 секунд, там есть самое меньшее только раз в минуту, возможно перед самим адресом скрипта что-то поставить типа sleep или чего-то вроде этого. чтобы он всетаки запускался каждые 5 секунд? или может быть подскажите как запускать скрипт скажем использую C++ демона например? | |
|
|
|
|
|
|
|
для: Blizard
(14.02.2009 в 18:38)
| | [поправлено модератором]
по cron`у:
сделал так
ignore_user_abort();
set_time_limit(0);
$interval=5;
do{
//тут код
sleep($interval);
}while(true);
|
но не работает, я подозреваю, что на сервере отключены ignore_user_abort(); и/или set_time_limit(0);
вопрос - подскажите как и где разрешить эти функции? | |
|
|
|
|
|
|
|
для: Blizard
(14.02.2009 в 20:10)
| | Эти функции ничего такого не решат.
код лишь заставит бесконечный процесс постоянно спать, просыпаясь каждые 5 секунд, ничего полезного не делая.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Blizard
(14.02.2009 в 18:38)
| | Собственно никакие планированные задания не требуется запускать так часто.
Их и раз в минуту-то запускать обычно не нужно. Поэтому и средств нет.
Если происходят какие-то критические события чаще этого интервала, то обработку надо вешать на них самих.
А функциональные параметры, зависящие от времени, можно и аналитически рассчитать.
Это по первому вопросу. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 20:21)
| | Trianon, я привел лишь кусок кода. который мне заменит cron, там где написано //тут код. там код на открытие и обновления файла, я не могу запускать его от каждого юзера потому что если файл перезаписывает один пользователь и этот же файл начинает перезаписывает другой пользователь. то в момент когда первый сотрет этот файл но еще не запишет заново, а второй считает в массив пустой файл и тогда в итоге второй пользователь файл заменит на пустой. Я думаю вы понимаете о чем я. Т.е. боюсь один файл на перезапись давать всем после каждого их действия. Поэтому чтобы больше приблизится к online обновление в 1 минуту мне не подходит, нужно сделать каждые 5 секунд и не могу найти php.ini на сервере.
А по вопросу помог ли я кому-то --- нет, т.к. уровень знаний не позволяет.. поэтому я тут и прошу помощи у более грамотных программистов. | |
|
|
|
|
|
|
|
для: Blizard
(14.02.2009 в 21:45)
| | > я не могу запускать его от каждого юзера потому что если файл перезаписывает один пользователь и этот же файл начинает перезаписывает другой пользователь. то в момент когда первый сотрет этот файл но еще не запишет заново, а второй считает в массив пустой файл и тогда в итоге второй пользователь файл заменит на пустой. Я думаю вы понимаете о чем я.
Смотрите функцию flock()
Вообще же использование БД обычно позволяет подобного рода сложности обойти. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 22:01)
| | БД не использую, т.к. подключения к ней каждую секунду думаю не есть хорошо, т.к. юзеров будет много и действий от них тоже будет много, да и с точки зрения безопасности мне кажется что файлы надежнее, но возможно и ошибаюсь..
будет ли работать flock() во freebsd?
и еще -- если юзер не может открыть запертый файл то скрипт будет дожидаться его разблокировки или нужно писать в случае false повторную попытку через какое-то время? | |
|
|
|
|
|
|
|
для: Blizard
(14.02.2009 в 22:20)
| | цикл . Засыпание на секунду и повторная попытка.
будет ли работать flock() во freebsd?
Ответы на такие вопросы замечательно получаются путем несложного эксперимента.
Относительно БД Вы неправы абсолютно. Ну да дело Ваше. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 22:23)
| | спасибо за советы, ответы и помощь! я думаю flock() это действительно то что мне нужно | |
|
|
|