-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
BuilderMan |
28-09-2006 13:52 490754 |
Скрипт который может сам себя обновить
Подскажите алгоритм данного сабжа
Задача такая... Клиент имеет скрипт который должен проверять версию на моем сайте и в случае если появилась новая версия обновить себя... Спасибо
|
Prisoner |
28-09-2006 16:15 490825 |
Доброго времени суток. Что понимать под "Клиент имеет скрипт"? Если я верно все понимаю и "Клиент имеет скрипт" - в коде страницы имеется на него ссылка (включение тела скрипта), то при верно настроенном сервере при каждом обновлении файла скрипта клиент (в моем понимании вопроса это ПА) получит также время его модификации для решения вопроса об использовании закешированной версии или версии с сервера (значит файл обновился и его надо закачать снова).
|
BuilderMan |
28-09-2006 20:39 490949 |
Клиент скачивает файл помещает в определенныю папку с правами на запись и в коде страницы делает include скрипта. Скрипт при выполнении получает некоторые данные с моего хоста, а также должен проверить есть ли новая версия его кода . соответсвенно если есть он должен перезаписать сам себя. Сервер клиента как бы должен быть не причем...
|
Скрипт на чём написан? Java Script, VBJ, PHP может быть?
|
BuilderMan |
29-09-2006 00:59 491027 |
только на PHP...
я приххожу к то му что с крипт который у клиента при получении от меня данных получает и информацию о том что есть новая версия.
Получает ее и сам себя перезаписывает. Наверное так. Хотя я хотел переписать скрипт клинта со стороны своего сервера...
|
BuilderMan
программа, способная
Цитата:
переписать скрипт клинта со стороны своего сервера
|
обычно называется вирус :) Поэтому броузеры этому сопротивляются. Если сопротивление ослабевает, значит в броузере/системе дыра.
|
BuilderMan |
29-09-2006 15:20 491226 |
вирусы эт все понятно) со стороны сервера не получитца... я загнался... Только со стороны клиента...файл сам перезапишет себя при получении определенной команды...
PHP код:
$socket = fsockopen($this->Server,$this->Port,$sock_err_no,$sock_err_str,$this->TimeOut);
if( FALSE === $socket ) return 'ERRORconnect';
else
{
$out = "GET /".$this->Script." HTTP/1.1\r\n".
"Host: ".$this->Host."\r\n";
$out .= "Connection: Close\r\n\r\n";
$result = fwrite( $socket, $out );
if( strlen( $out ) != $result ) return 'ERRORwrite';
else
{
while( !feof( $socket ) ){
$str = fgets( $socket, 40960 );
array_push( $res_array, $str );
}
$http_ok = array_shift($res_array);
if( !preg_match( "/^HTTP\/1\.[01] 200 /", $http_ok, $matches ) ) $return = 'ERRORserver';
}
fclose( $socket );
reset($res_array);
foreach ($res_array as $key => $value) { << вот этот момент как оптимизировать? чтоб найти мессагу U have old version
if( preg_match("/U have old version/", $value, $matches ) ) $new_code=$this->GetNewVersion();
}
}
ну а GetNewVersion коннектица ко мне получает новый скрипт и перезаписыват этот... так наверное?
|
Prisoner |
30-09-2006 13:44 491607 |
Попробуйте по аналогии с ПА и сервером: некий скрипт на клиенте выполняет роль ПА и обращается к серверу за данными (кодом файла), если данные говорят, что файл обновился, то ПА берет код и создает на клиенте файл с кодом принятым от сервера, затем созданный (или существующий, если данные свидетельствуют о необновлении файла) файл запускается на исполнение. Только обратите внимание на место вызова и области видимости переменных, могут быть подводные камни.
|
Время: 10:12.
© OSzone.net 2001-