| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
max_rip 16.08.2011 22:28
Но вы можете обработать файлики на стороне сервере, sed довольно таки мощный инструмент +)$pathTmpDir[/../data/tmp/]
$updateFile[update.zip]
$tmpUpdateFile[${pathTmpDir}${updateFile}]
$updateLog[update.log]
$updateLogFile[${pathTmpDir}${updateLog}]
^if(def $form:action && $form:action eq clearCache){
$status[^file::exec[clearCache.sh]]
$list[^file:list[/../data/cache/_sql/]]
}
<h2>Обновление системы</h2>
^if(!def $form:updateFile){
^if(-f "${pathTmpDir}.pid"){
$status[^file::exec[status.sh;;${pathTmpDir}.pid]]
^if($status.status == 0){
<h3>Происходит обновление системы</h3>
^if(-f $updateLogFile){
$fUpdateLog[^file::load[binary;$updateLogFile]]
<pre>$fUpdateLog.text</pre>
}
}{
<h3>Обновление ^if(-f "${pathTmpDir}.ok"){<span class="green">успешно}{<span class="red">провалено}</span></h3>
^if(-f $updateLogFile){
$fUpdateLog[^file::load[binary;$updateLogFile]]
<pre>$fUpdateLog.text</pre>
}
^printForm[]
}
}{
^printForm[]
}
}{
^form:updateFile.save[binary;$tmpUpdateFile]
$form:updateFile.name
$status[^file::exec[run.sh;$.SQLUSER[user]$.SQLPASS[pass]$.SQLDB[dbname]$.SQLHOST[localhost];]]
$response:location[http://$env:SERVER_NAME/serviceinput/]
Для обновления статуса нажмите <a href="http://$env:SERVER_NAME/serviceinput/">ссылку</a>
}run.sh #!/bin/sh ./update.sh > ./../../data/tmp/update.log 2>&1status.sh
#!/bin/sh pid=`cat ./../../data/tmp/.pid` if `kill -CHLD $pid >/dev/null 2>&1` then exit 0 else exit 1 fiupdate.sh
#!/bin/sh cd ./../../data/tmp/ echo $$ > .pid rm .ok #rm update.log echo $(date +"%d.%m.%y %T") Start unzip rm *.sql if unzip update.zip >/dev/null 2>&1 ; then echo $(date +"%d.%m.%y %T") unzip ok else echo $(date +"%d.%m.%y %T") unzip false exit 1 fi echo $(date +"%d.%m.%y %T") Start import #if mysql -u$SQLUSER -p$SQLPASS -D$SQLDB -h$SQLHOST < update.sql >/dev/null 2>&1 ; for FILENAME in `ls *.sql`; do #if ls *.sql | xargs cat | mysql -u$SQLUSER -p$SQLPASS -D$SQLDB -h$SQLHOST >/dev/null 2>&1 ; #if mysql -u$SQLUSER -p$SQLPASS -D$SQLDB -h$SQLHOST < $FILENAME > /dev/null 2>&1 ; if mysql -u$SQLUSER -p$SQLPASS -D$SQLDB -h$SQLHOST < $FILENAME > /dev/null 2> ./stderr.log ; then echo $(date +"%d.%m.%y %T") import $FILENAME else echo $(date +"%d.%m.%y %T") import $FILENAME false cat ./stderr.log rm ./stderr.log exit 1 fi done rm update.zip echo $(date +"%d.%m.%y %T") update.zip delete echo "" > .ok