Новости | 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