|
|
|
|
|
для: Poison
(11.06.2007 в 21:10)
| | 2 Poison
за код спасибо! чуть позже потестю!
только понять не могу, какая разница откуда его запускать? | |
|
|
|
|
|
|
|
для: tricket
(11.06.2007 в 18:54)
| | Такое происходит потомучто ты скрипт запускал через броузер=)
Попробуй напрямую все работает;)
<?
$fp = fopen($file, 'r');
$filetime = fread($fp, 1024);
fclose($fp);
$nowtime = time();
$delta = $nowtime-$filetime;
clearstatcache();
if ($delta <= 10) {
echo "Погодь начальничек скрипт итак активность проявлял ".$delta." секунл назад";
sleep(1);
exit();
}
$fp = fopen($file, 'w');
fwrite($fp, time());
fclose($fp);
clearstatcache();
sleep(10); // Demon:)
|
| |
|
|
|
|
|
|
|
для: DEM
(11.06.2007 в 18:30)
| | неа) не выйдет. скрипт запускается кроном | |
|
|
|
|
|
|
|
для: tricket
(11.06.2007 в 16:38)
| | Попробуйте может быть использовать КУКИ? Пусть в них записывается время и потом сверяется... | |
|
|
|
|
|
|
| Частенько при написание скриптом-демонов встаёт передо мной эта задача.
Раньше все демоны писал с использованием mysql, ща для демонов отказался от использования БД.
Использую файлы.
С использованием БД, я особо не парился, брал записывал в БД значение time(), и при каждом запуске сверял (время сейчас-значение в БД) и даю скрипт запускать если значение больше 60. И в скрипте-демоне просто напросто циклом писал каждый раз новое значение time().
А с файлами ето немного сложнее.
<?
$filetimear=file("time.txt");
$filetime=trim($filetimear[0]);
$nowtime=time();
$delta=$nowtime-$filetime;
if ($delta<=20)
{
echo "Погодь начальничек скрипт итак активность проявлял".$delta." секунл назад";
exit();
}
#следующая запись в цикле!
$file="time.txt";
$f=fopen($file, "a+b");
truncate($f,0);
$time=time();
fwrite($f, $time);
fclose($f);
?>
|
НО почему-то не работает при параллельном запуске скрипт!!!(скрипт второй такое ощущение что ждёт окончания первого)
Вот ещё на код наткнулсяя интересный(автора не помню...)
<?
#блокируем повторное открывание скрпита!
if (!function_exists('sys_get_temp_dir')) {
function sys_get_temp_dir() {
$temp_file = tempnam(md5(uniqid(rand(), TRUE)), '');
if ($temp_file) {
$temp_dir = realpath(dirname($temp_file));
unlink($temp_file);
return $temp_dir;
} else {
return FALSE;
}
}
}
$lock_file = sys_get_temp_dir() . "/" . basename($_SERVER["PHP_SELF"]) . ".lock";
$fp = fopen($lock_file, "w+");
$res = flock($fp, LOCK_EX + LOCK_NB);
if (!$res) {
print "Одна копия скрипта уже запущена, второй не надо!";
exit();
?>
|
Но работает не на всех операционках, и код очень не устойчив.
Вот сейчас думаю что же делать, как запретить вторую копию открыть? | |
|
|
|
|