parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

У меня обновление базы происходить так, правда файлики я подготавливаю локально...

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>&1
status.sh
#!/bin/sh
pid=`cat ./../../data/tmp/.pid`
if `kill -CHLD $pid >/dev/null 2>&1`
	then exit 0
	else exit 1
fi
update.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