Косенко Данила Юрьевич (kosenko_danila) wrote,
Косенко Данила Юрьевич
kosenko_danila

Category:

Демоны и таймеры

Сначала профессиональное.
Запуск демона на PHP из крона.
Был у меня скрипт-репликатор на PHP (гонял данные между базами). Запускаешь его из браузера - потекли данные. Запускаешь в консоли сервера - данные идут. Добавляю в крон (планировщик запуска) запуск каждую минуту (команда "php script.php") - данных нет.
Лирику пропускаю. Как искал глюк - тоже.
Короче.
PHP-скрипт использовал файл blok.txt как метку, что программа уже запущена (чтобы не запустились две копии на сервере одновременно), создавал на время работы и удалял по окончании. Если при запуске файл уже существует, то прекращал работу.
Функциям работы с файлами передавалось просто имя файла. Именно этот вариант и не работал из крона. Крону нужно, чтобы путь к файлу был абсолютным, от корня, а не относительным.
Когда будете писать свой демон на PHP, имейте это в виду.

Много таймеров на одной странице.
Если вам надо выставить на вэб-странице кучу таймеров обратного отсчета, да еще и каждый со своим временем оставшихся секунд, есть много способов. Самый простой, хоть и необычный - ниже.

Итак, у вас есть массив с количеством оставшихся секунд и еще какими-то данными. Вы выводите массив обычным циклом. До цикла объявляете счетчик:

$i=0;

А время оставшихся секунд у вас в переменной $t.
В том месте, где надо вывести таймер, пишете:

echo '<script src="timer.php?c='.($i++).&t='.$t.'"></script>';

А вот что писать в файле timer.php.

var timer<?=$_GET['c']?>=parseInt(<?=$_GET['t']?>);

function showtimer<?=$_GET['c']?>(){
if(timer<?=$_GET['c']?>>0){
timer<?=$_GET['c']?>--;
document.getElementById('s<?=$_GET['c']?>').innerHTML=timer<?=$_GET['c']?>;
}else{
document.getElementById('s<?=$_GET['c']?>').innerHTML='0';
}
setTimeout(showtimer<?=$_GET['c']?>,1000);
}

document.write('<span id="s<?=$_GET['c']?>"></span>');


И всё!
Tags: памятка, программирование, хозяйке на заметку
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 16 comments