-1

I have 500 php files i want to make a crontab to run them automatically (they store XML data in my database) my problem is :

when I make a crontab for each php file it works fine. the command like this:

* * * * * php /home/username/public_html/codes/php0.php

But when I want to run a shell script including all my php files like this :

* * * * * bash /home/username/public_html/codes/php.sh

it does not run.

php.sh:

#!/bin/sh

php php0.php
echo php0
php php1.php
echo php1
php php2.php
echo php2
.
.
.

Is it possible to wrap php files with bash script? and if yes why does not work am I miss something?

4

2 回答 2

2

您可能没有在您认为的目录中运行。

所以暂时替换 #!/bin/sh#!/bin/sh -vx 并添加一个

  pwd

在脚本的开头(即第二行)

然后也许添加一个

 cd /home/username/public_html/codes

或者也许定义一个变量并使用它:

 mycodedir=/home/username/public_html/codes
 php $mycodedir/php0.php
 echo php0

ETC...

我建议阅读高级 bash 脚本指南(即使它确实有弱点)。

于 2013-05-13T11:51:08.600 回答
0

目前,您的php.sh. 以下行

php php0.php

表示将在当前工作目录中php查找文件。php0.php在 cron 作业中,工作目录通常是/,即文件系统根目录。要检查工作目录到底是什么,您可以使用该pwd命令。

因此,您的php.sh脚本php0.php在文件系统根目录中查找文件,但该文件位于/home/username/public_html/codes/.

如果您在 中使用绝对路径php.sh,则当前工作目录无关紧要。所以只需在你的php.sh. 该文件将如下所示:

#!/bin/sh

php /home/username/public_html/codes/php0.php
echo php0
php /home/username/public_html/codes/php1.php
echo php1
php /home/username/public_html/codes/php2.php
echo php2
.
.
.
于 2013-05-13T12:11:40.900 回答