Страница 1 из 1
Помогите разобраться с cycle_свойцикл.php
Добавлено: Пт фев 28, 2014 9:30 am
dimik
Помогите разобраться с такой проблемой:
Есть скрипт: cycle_server.php лежит естественно в папке scripts.
Так вот если его вручную запустить:
http://localhost/scripts/cycle_server.php то он отрабатывает.
А вот почему он как цикл не запускается периодически? Что с ним сделать чтобы он как цикл работал? Более того, если посмотреть start.bat то его даже в списке нет!
Re: Помогите разобраться с cycle_свойцикл.php
Добавлено: Пт фев 28, 2014 9:57 am
sergejey
Делать в принципе ничего не нужно. Если он сделан по "образу и подобию" других скриптов cycle_*, то он запустится сам собой при перезапуске системы, т.к. основной цикл cycle.php как раз запускает всё, что лежит в папке /scripts/ и начинается на cycle_*
Re: Помогите разобраться с cycle_свойцикл.php
Добавлено: Пт фев 28, 2014 2:08 pm
dimik
Да, сделан по образу sample.php, заметил только что в примере нет строчки
chdir(dirname(__FILE__).'/../');
добавил ее и скрипт стал отрабатывать при ручном запуске.
вот код:
Код: Выделить всё
<?php
/*
* @version 0.2 (auto-set)
*/
chdir(dirname(__FILE__).'/../');
include_once("./config.php");
include_once("./lib/loader.php");
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
include_once("./load_settings.php");
function searchJson($obj, $valut, $direct)
{foreach($obj->Children as $child)
{
if(isset($child->id) && $child->id == $valut)
{
$sensorvalue = $child->Value;
sg($direct,$sensorvalue);
}
searchJson($child,$valut,$direct);
}
return;
}
$ch = curl_init('http://localhost:8085/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
searchJson($json,'31','ThisComputer.CPUtemp');
searchJson($json,'33','ThisComputer.CPUload');
// closing database connection
$db->Disconnect();
?>
если в браузере отдельно запустить cycle.php то в списке cycle_server.php присутствует.
В чем может быть проблема? Почему ThisComputer.CPUtemp и ThisComputer.CPUload не обновляются?
Re: Помогите разобраться с cycle_свойцикл.php
Добавлено: Пт фев 28, 2014 2:40 pm
sergejey
Всё-таки не совсем по образу и подобию, т.е. по подобию sample.php, но не cycle_*.php.
Цикл должен внутри себя работать, а по коду получается, что он один раз запускается и всё -- смотрите другие циклы как устроены.
Re: Помогите разобраться с cycle_свойцикл.php
Добавлено: Пт фев 28, 2014 3:00 pm
dimik
А разве start.bat не занимается тем, что постоянно запускает cycle.php? А тот в свою очередь запускает все cycle_*.php из папки scripts?
Re: Помогите разобраться с cycle_свойцикл.php
Добавлено: Пт фев 28, 2014 3:31 pm
sergejey
dimik писал(а):А разве start.bat не занимается тем, что постоянно запускает cycle.php? А тот в свою очередь запускает все cycle_*.php из папки scripts?
Нет, start.bat один раз запускает cycle.php, а тот распралеливается и один раз запускает все cycle_*.php
Re: Помогите разобраться с cycle_свойцикл.php
Добавлено: Пт фев 28, 2014 3:34 pm
dimik
В общем сделал сам скрипт циклическим и все заработало.
Спасибо за наводку.
Re: Помогите разобраться с cycle_свойцикл.php
Добавлено: Вс мар 23, 2014 6:49 pm
krasnov
Пишу свой цикл. После запуска сразу закрывается. Писал по образу существующих.
Код: Выделить всё
19:06:27 DEBUG [root]: Starting ./scripts/cycle_arduino.php ... (at /var/www/home/lib/general.class.php:390)
...
19:06:28 DEBUG [root]: Closing thread: php -q ./scripts/cycle_arduino.php --params "a:0:{}" (at /var/www/home/lib/general.class.php:390)
Код цикла:
Код: Выделить всё
<?php
chdir(dirname(__FILE__).'/../');
//include_once("./config.php");
//include_once("./lib/loader.php");
//include_once("./lib/threads.php");
set_time_limit(0);
$rv = exec("stty -F /dev/ttyACM0 min 0 time 0 -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke");
include_once("./scripts/php_serial.class.php");
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyACM0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
while(1)
{
echo date("H:i:s") . " running " . basename(__FILE__) . "\n";
if (!$updated_time || (time() - $updated_time) > 1 * 60 * 60)
{
// DebMes("Cycle running OK: ".basename(__FILE__));
$updated_time=time();
}
// setGlobal((str_replace('.php', '', basename(__FILE__))).'Run', time());
$data = $serial->readPort();
if ($data<>"")
{
$readArray = explode(";",$data);
foreach($readArray as $read)
{
if ($read<>"")
{
list($sensor,$param,$comment,$value) = explode("#",$read);
if ($sensor==1)
{
$sensorName = "firstTHSensor";
$method = "dataChanged";
if ($param==1)
{
$t = $value;
}
else if ($param==2)
{
$h = $value;
}
}
}
}
if ($sensorName<>"" && $method <>"" && $t <> "" && $h <> "")
{
file_get_contents('http://192.168.1.185/home/objects/?object='.$sensorName.'&op=m&m='.$method.'&t='.$t.'&h='.$h);
}
}
if (file_exists('./reboot'))
{
exit;
}
sleep(1); //Задержка 1 секунда
}
//DebMes("Unexpected close of cycle: " . basename(__FILE__));
?>
Методом проб и ошибок удалось выяснить что если закомментировать вызовы setGlobal и DebMes то цикл работает.
Поправил файлы /etc/php5/apache2/php.ini, /etc/php5/cli/php.ini раскомментировал строку error_log = syslog
После перезапуска увидел ошибку в /var/log/syslog
Код: Выделить всё
Mar 23 19:40:50 nas php: PHP Fatal error: Call to undefined function setGlobal() in /var/www/home/scripts/cycle_arduino.php on line 29
Подскажите, что нужно поправить чтобы методы виделись?