Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / РЕшить проблему с постоянным вызовом скрипта и вывод информации на экран, либо иным методо / 6 сообщений из 6, страница 1 из 1
01.07.2014, 07:14
    #38684333
mussi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РЕшить проблему с постоянным вызовом скрипта и вывод информации на экран, либо иным методо
Стоит задача, постоянно, раз например в 40 секунд сверять последнюю полученную дату с датой из бд, и выводить последнюю полученную дату на экран, дату хранить в переменной.
РЕализовал цилом вайл(тру нужные мне действия, но встала проблема, при вызове скрипта из консоли все нормально, раз в 40 секунд он выдает дату, однако при обращении к скрипту из веба, он уходит в бесконечный цикл и само собой ниче не показывает, в итоге апач по таймауту выдает 500ю ошибку.
Мне хотелось бы чтоб при обращении к скрипту, он выдавал последнюю полученную дату и на этом выполнение скрипта завершалось. Это реально ?
Код
<?php
$newdate = date('h:i:s');

function checknew($getdate)
{
global $newdate;
$conn = oci_connect("tratata", "tralala", "//172.10.22.21:1521/info");
$sql = "select * from last_date";
$res = OCIParse($conn, $sql);
oci_execute($res);
$row = oci_fetch_row($res);
if ($row[0] !== $getdate)
$newdate = $row[0];
}
while(true){
usleep(40000000);
checknew($newdate);
echo "<b>".$newdate."</b>";
}
?>
...
Рейтинг: 0 / 0
01.07.2014, 08:49
    #38684372
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РЕшить проблему с постоянным вызовом скрипта и вывод информации на экран, либо иным методо
Самое простое решение - организуйте запрос от клиента каждые 40 секунд.
...
Рейтинг: 0 / 0
01.07.2014, 18:59
    #38685075
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РЕшить проблему с постоянным вызовом скрипта и вывод информации на экран, либо иным методо
mussiСтоит задача, постоянно, раз например в 40 секунд сверять последнюю полученную дату с датой из бд, и выводить последнюю полученную дату на экран, дату хранить в переменной.
РЕализовал цилом вайл(тру нужные мне действия, но встала проблема, при вызове скрипта из консоли все нормально, раз в 40 секунд он выдает дату, однако при обращении к скрипту из веба, он уходит в бесконечный цикл и само собой ниче не показывает, в итоге апач по таймауту выдает 500ю ошибку.
Мне хотелось бы чтоб при обращении к скрипту, он выдавал последнюю полученную дату и на этом выполнение скрипта завершалось. Это реально ?
Код
<?php
$newdate = date('h:i:s');

function checknew($getdate)
{
global $newdate;
$conn = oci_connect("tratata", "tralala", "//172.10.22.21:1521/info");
$sql = "select * from last_date";
$res = OCIParse($conn, $sql);
oci_execute($res);
$row = oci_fetch_row($res);
if ($row[0] !== $getdate)
$newdate = $row[0];
}
while(true){
usleep(40000000);
checknew($newdate);
echo "<b>".$newdate."</b>";
}
?>

echo ''; flush();
отключить буферизацию в пхп, прокси сервере, отключить гзип сжатие.
ЗЫ
обычно это можно сделать специальнымы заголовками для прокси сервера, установкой настроек для пхп.
...
Рейтинг: 0 / 0
01.07.2014, 23:10
    #38685223
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РЕшить проблему с постоянным вызовом скрипта и вывод информации на экран, либо иным методо
alex564657498765453отключить буферизацию в пхп, прокси сервере, отключить гзип сжатие.Как-то эти трахтибидохи не помогли, когда PHP работал на шаред-хостинге как fast-cgi (могу ошибаться, но точно не модуль апача). Вероятно, виною была еще буферизация вебсервера.
...
Рейтинг: 0 / 0
02.07.2014, 01:25
    #38685282
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РЕшить проблему с постоянным вызовом скрипта и вывод информации на экран, либо иным методо
Если у тебя клиенты на современных браузерах сидят и обновлять надо ОДНО значение, то гуглить "server-sent events"




Если тебе надо отсылать пользователям что-то что не влезет в одну строку, или их браузеры не умеют HTML5, то все грустно и печально.

Наиболее универсально и надежно:
Делаешь страничку, выставляешь ей мету Refresh на 40 секунд и она будет перезапрашивать время как надо.
Чуть сложнее - делаешь эти же перезапросы из js и обновляешь соответствующий элемент на страничке.

Чтобы скрипт крутился на сервере и раз в 40 секунд отправлял в браузер новое значение - теоретически возможно, практически чрезвычайно сложно и делается по разному в разных браузерах.
Наиболее удобно это делается для FF. Он понимает http заголовок multipart/x-mixed-replace.
Для Chrome есть специальная фишка в SPDY, но сходу я ее задействовать не смог.
IE как всегда - ничего не умеет.
Остальные браузеры не проверял.

Гуглить "http server push"
...
Рейтинг: 0 / 0
02.07.2014, 12:56
    #38685659
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РЕшить проблему с постоянным вызовом скрипта и вывод информации на экран, либо иным методо
vklealex564657498765453отключить буферизацию в пхп, прокси сервере, отключить гзип сжатие.Как-то эти трахтибидохи не помогли, когда PHP работал на шаред-хостинге как fast-cgi (могу ошибаться, но точно не модуль апача). Вероятно, виною была еще буферизация вебсервера.

гыгыгы
нельзя казнить помиловать :)

отключить буферизацию на ПХП и проксисервера
так же в обоих отключить гзип сжатие, ...и подобные фильтры вывода которые могут буферизировать, просто по умолчанию гзип обычно только мешает.

при отключении буферизации, надо ещо и запрещать временый файл - хз почему нджинкс продолжал буферизировать во временый файл при запрете буфера.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / РЕшить проблему с постоянным вызовом скрипта и вывод информации на экран, либо иным методо / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]