我的逻辑是,上传word后,把word文件名写入到exec.txt里,然后服务器上每2秒执行一段shell去检测exec.txt里是否是空的,如果不是空的,就执行java -jar 。把word转成pdf,如果转成功,就把exec里对应的文件名删掉。
dowordtopdf脚本是这样写的:
#!/bin/sh
time=2
for (( i=0; i<60; i=(i+$time) )); do
myFile="/home/svn/repos/www/wwwroot/Runtime/Logs/exec.txt"
if [ ! -s "$myFile" ]
then
touch "$myFile"
else
cat "$myFile" | while read line
do
myPdf=$line
if [ "$myPdf" ]
then
pdfFile="/home/svn/repos/www/wwwroot/Upload/pdf/${myPdf}.pdf"
if [ ! -f "$pdfFile" ]
then
java -jar /alidata1/source/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /home/svn/repos/www/wwwroot/Upload/doc/${myPdf}.doc /home/svn/repos/www/wwwroot/Upload/pdf/${myPdf}.pdf
else
echo "/home/svn/repos/www/wwwroot/Upload/pdf/${myPdf}.pdf exist" >> /home/svn/repos/www/wwwroot/Runtime/Logs/log.txt
fi
if [ ! -f "$pdfFile" ]
thenjava -jar /alidata1/source/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /home/svn/repos/www/wwwroot/Upload/doc/${myPdf}.doc /home/svn/repos/www/wwwroot/Upload/pdf/${myPdf}.pdf
else
sed -i "/$myPdf/d" "$myFile"
fi
fi
done
fi
sleep $time
done
exit 0
crontab 里是这样写的:
* * * * * sh /usr/sbin/dowordtopdf
php上传的是这样写的:
$tempFileNmae = date("YmdHis") . $rand;
$file = $tempFileNmae.'.doc';
$file_path = "Upload/doc/". $file;
$fp=fopen('Runtime/Logs/exec.txt',"a");//打开文件
fwrite($fp,$tempFileNmae."\n");//写入文件
fclose($fp);//关闭文件 手动执行shell是可以的,但是放到crontab里就不行了,请大牛指点一下,感谢!
dowordtopdf脚本是这样写的:
#!/bin/sh
time=2
for (( i=0; i<60; i=(i+$time) )); do
myFile="/home/svn/repos/www/wwwroot/Runtime/Logs/exec.txt"
if [ ! -s "$myFile" ]
then
touch "$myFile"
else
cat "$myFile" | while read line
do
myPdf=$line
if [ "$myPdf" ]
then
pdfFile="/home/svn/repos/www/wwwroot/Upload/pdf/${myPdf}.pdf"
if [ ! -f "$pdfFile" ]
then
java -jar /alidata1/source/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /home/svn/repos/www/wwwroot/Upload/doc/${myPdf}.doc /home/svn/repos/www/wwwroot/Upload/pdf/${myPdf}.pdf
else
echo "/home/svn/repos/www/wwwroot/Upload/pdf/${myPdf}.pdf exist" >> /home/svn/repos/www/wwwroot/Runtime/Logs/log.txt
fi
if [ ! -f "$pdfFile" ]
thenjava -jar /alidata1/source/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /home/svn/repos/www/wwwroot/Upload/doc/${myPdf}.doc /home/svn/repos/www/wwwroot/Upload/pdf/${myPdf}.pdf
else
sed -i "/$myPdf/d" "$myFile"
fi
fi
done
fi
sleep $time
done
exit 0
crontab 里是这样写的:
* * * * * sh /usr/sbin/dowordtopdf
php上传的是这样写的:
$tempFileNmae = date("YmdHis") . $rand;
$file = $tempFileNmae.'.doc';
$file_path = "Upload/doc/". $file;
$fp=fopen('Runtime/Logs/exec.txt',"a");//打开文件
fwrite($fp,$tempFileNmae."\n");//写入文件
fclose($fp);//关闭文件 手动执行shell是可以的,但是放到crontab里就不行了,请大牛指点一下,感谢!
crontab自动执行脚本
我想把word转成pdf