Привет, мне нужно чтоб скрипт /home/php/go/start.php запускался 1 раз в пол секунды.
Хочу спросить если запустить cron и скрипт будет запускаться 1 раз в пол секунды и будет выполняться на сервере дольше - (иногда данному скрипту требуется 3 секунды для выполнения иногда больше, но частенько он и 1/100 требует для выполнения) скажите мне пожалуйста если скрипту требуется больше времени чем пол секунды, а время уже прошло (то есть необходимо запускать следующий скрипт - данный скрипт который уже запусщен не остановится? - он остановится только по выполнению либо по истечению 30 секунд (сервер так настроен по истечению 30 секунд глушим скрипт если он продолжает выполняться)).
И еще один вопрос - cron запускает скрипт - когда он запустит СЛЕДУЮЩИЙ скрипт все переменные стерутся верно ? (он его заново запустит и все что было выполнено в предыдущем (например $ha=123) не перейдет в следующий скрипт - запуск крона это точно такая же вещь каг будто пользователь просто обновляет страницу?)
И еще один вопросик маленький - как мне это все реализовать через php?
SlavaFr
2.10.2013 - 11:43
1) cron на пол секунды не выставить, так как одна секунда это самая малая единица для cron-job.
2) cron запускает пхп-
скрипты как отдельный процесс и по этому
скрипт который стартует через крон, ему все ровно что делают другие
скрипты (за исключением если ты посредством fork или других библиотек попытаешься копаться в процессах).
3)Да,
скрипт остановится когда он сделает свою работу, или произойдет ошибка, или максимально отведенное время истечет.
------------------------
Edit: 1 секунда, неправильно
. самое частое 1 минута
_____________
↓↓↓↓↓↓↓↓↓↓ответ может быть здесьили в mysql_error();
Цитата (SlavaFr @ 2.10.2013 - 11:43) |
1) cron на пол секунды не выставить, так как одна секунда это самая малая единица для cron-job.
2) cron запускает пхп-скрипты как отдельный процесс и по этому скрипт который стартует через крон, ему все ровно что делают другие скрипты (за исключением если ты посредством fork или других библиотек попытаешься копаться в процессах).
3)Да, скрипт остановится когда он сделает свою работу, или произойдет ошибка, или максимально отведенное время истечет. |
Спасибо большое, как я понял мне просто нужно дать команду cronu 2 раза, чтоб запуск происходил 2 раза в секунду.
Подскажите мне пожалуйста что в php скрипте нужно написать чтоб /home/php/go/start.php запускался? как я понял нужна 1 строка задания для крона в php файле - после этого я залью данный файл на сервер и запущу его 2 раза тем самым дам задания крону запускать скрипт /home/php/go/start.php 2 раза в секунду.
Пожалуйста подскажите мне строку которую я должен написать в файле php и запустить (задание для crona), в google конечно много информации, но я не когда cronom не пользовался и не хочу что то сделать не так, а на denwere не протестируешь(
Игорь_Vasinsky
2.10.2013 - 11:57
Цитата |
чтоб запуск происходил 2 раза в секунду. |
вы его в секунду хотябы в секунду 1 раз попробуйте запустить
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (Игорь_Vasinsky @ 2.10.2013 - 11:57) |
Цитата | чтоб запуск происходил 2 раза в секунду. |
вы его в секунду хотябы в секунду 1 раз попробуйте запустить
|
Как можно попробовать запустить его хоть 1 раз в секунду?
SlavaFr
2.10.2013 - 12:29
Я запустил не правильную информацию.
Крон работает максимум поминутно
http://ru.wikipedia.org/wiki/Cron
_____________
↓↓↓↓↓↓↓↓↓↓ответ может быть здесьили в mysql_error();
Игорь_Vasinsky
2.10.2013 - 12:59
Цитата |
Как можно попробовать запустить его хоть 1 раз в секунду? |
крон нельзя, а вот внутри скрипта можно сделать итерацию с интервалом в 1 секунду.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (Игорь_Vasinsky @ 2.10.2013 - 12:59) |
крон нельзя, а вот внутри скрипта можно сделать итерацию с интервалом в 1 секунду. |
Это конечно можно сделать, можно вообще без крона обойтись - просто в
скрипте /home/
php/go/start.
php прописать следующее -
ini_set("max_execution_time", "600000000");
$aaaa=0;
while($aaaa<1){
sleep(1);
Если сервер перезапустился чтоб не добавлять в автозапуск скрипт - создаем новое значение в таблице конфиг с секундами, каждый раз когда скрипт выполняется update `sec` и в каком-то скрипте к которому обращаются пользователи написать проверку `sec` если значение больше 10 минут запускаем скрипт /home/php/go/start.php
Код скрипта /home/php/go/start.php
}
Но к сожалению так делать нельзя по одной причине - код который выполняется в
скрипте /home/
php/go/start.
php весит 1 mb - в нем находится куча переменных которые не должны чему то равняться, то есть допустим в первом запуске $urs=10; , а во втором запуске она не чему не должна равняться.
Можно конечно поместить в конец
скрипта все переменные и задать им значение ''; но это лишняя работа как мне кажется можно обойтись как то по другому
Игорь_Vasinsky
2.10.2013 - 13:36
без крона ты скрипт не запустишь)) тока если юзер на него встанет 2мя ногами.
Цитата |
но это лишняя работа как мне кажется можно обойтись как то по другому |
ещё раз, читаем внимательно:
Запуск скрипта кроном возможен поминутно, не по секндно
Можно запускать скрипт 1 раз в 2 минуты, но в нутри скрипта в цикле запустить скрипт столько сколько нужно раз
есть 100 пудовый вариант запуска 1 раз в секунду - открыли в браузере url скрипта и указательным пальцем на F5 1 раз в секунду.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (Игорь_Vasinsky @ 2.10.2013 - 13:36) |
есть 100 пудовый вариант запуска 1 раз в секунду - открыли в браузере url скрипта и указательным пальцем на F5 1 раз в секунду. |
Так сейчас и работает, в опере поставил автообновление в 1 секунду, так работает уже 10 дней, нужно найти какой-то другой Автономный вариант
Игорь_Vasinsky
2.10.2013 - 14:30
ну более менее гуманные варианты я предложил выше)
то что делаете сейчас вы - это браво)
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (Игорь_Vasinsky @ 2.10.2013 - 14:30) |
ну более менее гуманные варианты я предложил выше)
то что делаете сейчас вы - это браво) |
Я придумал, а вы скажите будет работать так или нет.
Создаем таблицу mysql - назовем ее `cron` в таблице будет 2 столбика `id` и `sec`. - и вставим 1 строку в базу с идентификатором 1
Далее start.php изменяем - добавляем следующие строки
ini_set("max_execution_time", "600");
$sterteiwen=mysql_query("SELECT * FROM `cron` WHERE `id`='1'");
$sterteiwen1=mysql_fetch_array($sterteiwen);
$sterteiwensec=$sterteiwen1['sec'];
$sterteiwensec++;
if($sterteiwensec<50){
$newsec=$sterteiwensec;
}else{
$newsec=0;
}
mysql_query("UPDATE `cron` SET `sec`='$newsec' WHERE `id`='1'");
sleep($sterteiwensec);
Так как cron запускает задания 1 раз в минуту, мы добавляем туда 50 запусков нового start.php.
Задумка следующая - cron запускает 50 раз start.php, каждый новый start.php - коннектится к строке в базе получая значение sec - добавляет к этому значению +1 и записывает назад в базу - это значение отвечает за количество ожидаемых секунд при запуске основного кода который должен выполнится, если значение ==50 значит это последний скрипт (так как в задание для cron мы поместили 50 задач запуска start.php), значение изменяем на 0 для следующей минуты запуска.
Будет ли моя идея работать? хочу протестировать, но не знаю где находится файл на сервере crona в котором необходимо добавить 50 одинаковых строк запуска файла start.php
Подскажите мне пожалуйста где лежит файл со списком задач для crona и как должна быть написана строка задания для запуска скрипта /home/php/go/start.php , хочу протестировать свою идею
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.