Вообщем не дает покоя мне эта команда)
посмотрел как делается выборка по каким теминалам рассылать запрос если явно не указан IP:
Код: Выделить всё
SELECT * FROM terminals WHERE 1 AND MAJORDROID_API=1 AND (NAME LIKE '' OR TITLE LIKE '');
к сожелению ответ всегда будет пустым(.
Рабочий вариант запроса у меня выглядит так:
Код: Выделить всё
SELECT * FROM terminals WHERE IS_ONLINE=1 AND MAJORDROID_API=1
PS:
вот эту конструкцию я так думаю полагалось использовать для возможности указания не только IP терминала но и его имени
но тогда, мне кажется, что нужно было добавить еще одно ЕСЛИ.
как то так
Код: Выделить всё
function ask($prompt, $target = '') {
processSubscriptions('ASK', array('prompt' => $prompt, 'target' => $target));
$service_port='7999';
$in='ask:'.$prompt;
if (preg_match('/^[\d\.]+$/',$target)) {
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket) {
$result = socket_connect($socket, $target, $service_port);
if ($result) {
socket_write($socket, $in, strlen($in));
}
}
socket_close($socket);
} elseif(preg_match('/^[a-zA-Z]+$/',$target)) {
$qry=1;
$qry.=" AND MAJORDROID_API=1";
$qry.=" AND (NAME LIKE '".DBSafe($target)."' OR TITLE LIKE '".DBSafe($target)."')";
$terminals = SQLSelect("SELECT * FROM terminals WHERE IS_ONLINE=$qry");
$total = count($terminals);
for ($i = 0; $i < $total; $i++) {
$address = $terminals[$i]['HOST'];
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket) {
$result = socket_connect($socket, $address, $service_port);
if ($result) {
socket_write($socket, $in, strlen($in));
}
}
socket_close($socket);
}
} else {
$qry=1;
$qry.=" AND MAJORDROID_API=1";
$terminals = SQLSelect("SELECT * FROM terminals WHERE IS_ONLINE=$qry");
$total = count($terminals);
for ($i = 0; $i < $total; $i++) {
$address = $terminals[$i]['HOST'];
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket) {
$result = socket_connect($socket, $address, $service_port);
if ($result) {
socket_write($socket, $in, strlen($in));
}
}
socket_close($socket);
}
}
}