Что нового

Перевод Autoit скрипта в PHP

valldar

Новичок
Сообщения
32
Репутация
2
Форумчане, нужна ваша помощь, вернее тех кто шарит в РНР :D
вот этот скриптик нужно портировать в php. Фактически это бесконечный цикл, который каждые 8 часов проверяет разницу во времени и если True, то выполяет функцию:
Код:
Global $file = @ScriptDir & '\times.ini'
If Not FileExists($file) Then
	IniWrite($file, 1, time, 0)
	IniWrite($file, 2, time, 0)
EndIf

While 1
	For $i = 1 To 2
		$time = IniRead($file, $i, time, Default)
		If $time = 0 Then
			_myfunc($i)
		Else			
			Switch $i
				Case 1
					If _DateDiff('d', $time, _NowCalc())>= 1 Then _myfunc($i) ; разница в днях
				Case 2
					If _DateDiff('h', $time, _NowCalc())>=8 Then _myfunc($i)  ; разница в часах
			EndSwitch
		EndIf
	Next
	Sleep(8*60 * 60 * 1000)
WEnd


Сам я гуглил, гуглил, гуглил, все что у меня получилось это:
Код:
if (isset($_GET['b'])) {
$b = $_GET['b']; 
} else {
$b=0;
}
$file1 = 'times1.txt';
$file2 = 'times2.txt';
	while ($b==0)
	{	
	for ($i=1;$i=2;$i++)
	{	
	switch ($i)
	{
	case 1:
	$datetime2=date("Y-m-d H:i:s");
	$datetime1=file_get_contents($file1);  // тут записано $datetime1 в формате "Y-m-d H:i:s"
	$interval1 = date_diff($datetime1, $datetime2);
        echo $interval1->format('d'); // нужно вывести разницу в днях
	case 2:
	$datetime2=date("Y-m-d H:i:s");
	$datetime1=file_get_contents($file2);
	$interval2 = date_diff($datetime1, $datetime2);
        echo $interval2->format('h'); //здесь нужна разница в часах
	}
	}
	if ($i=2) {break;}
	 }

Нифига не работает.Прбовал менятькод по всякому, в результате или какая то ошибка появляется, или просо пустая страница
 

Nik_rus

Python The Snake.
Сообщения
214
Репутация
62
1.
if ($i==2) {break;}
2. Не уверен, что php-скрипт может выполнять вечно. Кажется, есть ограничение, так что crontab в помощь.
3. date_diff в качестве аргументов принимает объекты типа DateTimeInterface.
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Nik_rus [?]
2. Не уверен, что php-скрипт может выполнять вечно. Кажется, есть ограничение, так что crontab в помощь.
Щас есть такой выкидышь хз чего, что на php пишут программы
 

BIOS

Жизнь - игра. График - супер, но сюжет - хреновый.
Сообщения
173
Репутация
69
Код:
<?php
    global $file;
    $file=dirname(__FILE__).'\times.ini';
    if (!file_exists($file)) {
        $data=parse_ini_file($file, true);
        $data['1']['time']=0;
        $data['2']['time']=0;
        
        write_php_ini($data, $file);
    }
    while(1) {
        for($i=1;$i<3;$i++) {
            $data=parse_ini_file($file, true);
            $time=$data[$i]['time'];
            if ($time==0)
                _myfunc($i);
            else {
                $time=preg_split('/[^[:digit:]]+/',$time);
                $time=mktime($time[3],$time[4],$time[5],$time[1],$time[2],$time[0]);
                Switch($i) {
                    Case 1:
                        if ((date('d',time()-$time))>=1) _myfunc($i);
                    Case 2:
                        if ((date('h',time()-$time))>=8) _myfunc($i);
                }
            }
            
        }
        sleep(8*60*60*1000);
    }

    function write_php_ini($array, $file)
{
    $res = array();
    foreach($array as $key => $val)
    {
        if(is_array($val))
        {
            $res[] = "[$key]\r\n";
            foreach($val as $skey => $sval) $res[] = "$skey = ".(is_numeric($sval) ? $sval : '"'.$sval.'"'."\r\n");
        }
        else $res[] = "$key = ".(is_numeric($val) ? $val : '"'.$val.'"'."\r\n");
    }
    
    file_put_contents($file, $res);
}
?>
 
Верх