Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Скрипт который может сам себя обновить (http://forum.oszone.net/showthread.php?t=72066)

BuilderMan 28-09-2006 13:52 490754

Скрипт который может сам себя обновить
 
Подскажите алгоритм данного сабжа
Задача такая... Клиент имеет скрипт который должен проверять версию на моем сайте и в случае если появилась новая версия обновить себя... Спасибо

Prisoner 28-09-2006 16:15 490825

Доброго времени суток. Что понимать под "Клиент имеет скрипт"? Если я верно все понимаю и "Клиент имеет скрипт" - в коде страницы имеется на него ссылка (включение тела скрипта), то при верно настроенном сервере при каждом обновлении файла скрипта клиент (в моем понимании вопроса это ПА) получит также время его модификации для решения вопроса об использовании закешированной версии или версии с сервера (значит файл обновился и его надо закачать снова).

BuilderMan 28-09-2006 20:39 490949

Клиент скачивает файл помещает в определенныю папку с правами на запись и в коде страницы делает include скрипта. Скрипт при выполнении получает некоторые данные с моего хоста, а также должен проверить есть ли новая версия его кода . соответсвенно если есть он должен перезаписать сам себя. Сервер клиента как бы должен быть не причем...

cr0ns 29-09-2006 00:39 491023

Скрипт на чём написан? Java Script, VBJ, PHP может быть?

BuilderMan 29-09-2006 00:59 491027

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

mar 29-09-2006 01:24 491031

BuilderMan
программа, способная
Цитата:

переписать скрипт клинта со стороны своего сервера
обычно называется вирус :) Поэтому броузеры этому сопротивляются. Если сопротивление ослабевает, значит в броузере/системе дыра.

benya 29-09-2006 12:06 491155

mar,
Похоже на то ;)

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$socket40960 );
            
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

Попробуйте по аналогии с ПА и сервером: некий скрипт на клиенте выполняет роль ПА и обращается к серверу за данными (кодом файла), если данные говорят, что файл обновился, то ПА берет код и создает на клиенте файл с кодом принятым от сервера, затем созданный (или существующий, если данные свидетельствуют о необновлении файла) файл запускается на исполнение. Только обратите внимание на место вызова и области видимости переменных, могут быть подводные камни.


Время: 20:51.

Время: 20:51.
© OSzone.net 2001-