使用“at”从cgi脚本中调用延迟的进程

这是一个难题,我希望你能帮助我。 客户希望在通过cgi脚本上传文件47分钟后发送欢迎信。 我写了一个例程发送这封信,然后我试图用Linux的“at”命令来执行它。

当这不起作用时,我在/ cgi-bin目录中设置了以下testing。


底线是:当由apache调用时,“at”命令不起作用。 有没有办法解决?


谢谢,

Rob Young


testing文件
 -------------------------------------------------- -------------------------

 $> cat test1.pl
 #!的/ usr / bin中/ perl的
 #这是对“在”LINUX命令的testing,当从APACHE中调用时
打印“Content-type:text / html \ n \ n”;
 my @ lt = localtime(time()+ 60);
我的$ cmd =“echo”/path/to/test2.pl“| at $ lt [2]:$ lt [1]”;
打印$ cmd;
系统($ CMD);

 $> cat test2.pl
 #!的/ usr / bin中/ perl的
我的$ cmd =“echo”它跑了!“> it_ran.txt”;
系统($ CMD);




命令行演示
 -------------------------------------------------- ----------------
 $> rm it_ran.txt
 rm:不能删除`it_ran.txt':没有这样的文件或目录
 $> ./test1.pl
内容types:text / html

 echo'/path/to/test2.pl'| 在20:28上午55在2011-08-15 20:28
 $> atq
 55 2011-08-15 20:28一个ryoung
 $>date
星期一8月15日20:27:11 CDT 2011
 $> cat it_rat.txt
 cat:it_rat.txt:没有这样的文件或目录
 $>date
星期一8月15日20:28:01 CDT 2011
 $> cat it_ran.txt
它跑了!


 APACHE演示
 -------------------------------------------------- ----------------------------------------
然后通过浏览http://www.MYSERVER.com/cgi-bin/test1.pl来调用相同的脚本
 [浏览器输出:
                   echo'/path/to/test2.pl'| 在20:30
 ]

 $>date
星期一8月15日20:30:40 CDT 2011
 $> cat it_ran.txt
 cat:it_ran.txt:没有这样的文件或目录

在脚本中指定at的完整path。 更不用说你的it_ran.txt文件了。 如何知道该文件应该存放在哪里? 它可能试图写入根目录并失败。

你应该使用错误检查 。 检查系统命令的结果代码或本身。

程序和调用返回错误,以帮助您正确处理exception。