2010-04-19 37 views
0

有没有办法在cron中每十分钟或在预定时间运行脚本来添加一个php脚本(文件)?在cron中添加php脚本以执行来自php的计划任务?

因为我希望用户能够安排何时发送通讯到他选择的很多电子邮件。

所以我必须从PHP创建一个cron作业来在该预定时间运行一个php文件。

,如果你有一个共享的网络托管环境(不VPS)

回答

2

如果脚本文件名是news.php和/home/user/news.php 的crontab线好像是这是可能的:

* * * * * php /home/user/news.php 

如果你不想每分钟运行一次。 您可以编辑*与左(M,H,DOM,星期一,DOW)

但是,如果只有你有相同的虚拟主机,你不能做到这一点, 你必须能够访问外壳或其他方法来配置 您crobtab文件(可能从您的提供商接入面板)

但是你可以在其他服务器上运行的crontab工作由Apache over HTTP协议来运行你的news.php。在此选项中,远程服务器上的crontab作业必须通过网络运行脚本。例如。 wget的是一个很好的选择,因为它:

* * * * * wget http://www.yourdomain.com/dir/news.php 
+0

伟大的解决方案! – 2010-04-19 13:45:18

+0

那么我的解决方案是不被接受?;-) – Svisstack 2010-04-19 14:04:39

1

我的建议是允许Apache的调用来改变的cron的PHP脚本。这是灾难写的。通常cron被设置为需要root权限。这是可以改变的,但重点是如果你的网站被黑客入侵,给攻击者修改你的cron的能力可能会非常糟糕。

更重要的是,它不是必需的。你所要做的就是选择一些粒度,比如说每分钟或5分钟或10分钟。你对用户说,他们可以把它安排到这个级别。给他们一些从每个月到每5分钟的选项。无论他们选择什么,将其写入数据库。

然后每1,5或10分钟运行一次不同的PHP脚本(无论最小粒度是多少),并让它查看数据库以查看是否有任何要运行,执行或发送的内容。

+0

你可以编辑crontable由用户,但每个用户有独立的自我crontable。 – Svisstack 2010-04-19 10:47:38

+0

@Swisstack是的,但这是您的整个Web应用程序的一个用户(通常是Linux上的“nobody”)。 – cletus 2010-04-19 11:15:23

1

是这是可能的,但在共享主机上它会影响你的以及该主机上的其他网站。

因此,如果你的文件没有经常被cron调用,那么可以把cron放在共享主机上,但是如果你必须经常调用它,那么这是不可取的,你也可以由你的提供者抛出,因为没有人因为其他网站而希望有不足之处的网站。