在没有cron的外部Web服务器上的特定时间执行脚本

时间:2013-05-04 11:18:19

标签: php hosting scheduled-tasks

我有一个托管在外部网络托管服务上的网站,其中包括允许用户订阅活动并添加到注册列表。

我希望能够在活动开始前一天通过电子邮件提醒这些用户,提醒他们更新有关位置的信息等。

目前,我的托管服务不支持cron作业,我认为这会提供实现此目的的方法。

我有一个想法,当任何用户访问最接近我发送电子邮件时的首页时执行该功能,但这似乎是一个糟糕的选择,让我觉得必须有更好的方法。

我知道有些公司会在特定时间收费执行您的脚本,但我希望能够更灵活地在我的网站上直接配置它。

我想知道PHP中是否有任何API可以让我这样做,或者我的想法是实现目标的最佳方式,还是我错过了一些明显的东西......

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:0)

查看mcrypt_encryptmcrypt_decrypt个功能。您可以在外部页面上设置PHP脚本,并输入get参数。该输入将用作身份验证,因此没有人未经授权运行脚本。使用上述功能加密和解密授权密钥。这可能是你喜欢的任何东西,但我建议你随意创建一些东西,例如:

$authMessage = 'yourMessage' . date('Y-m-d', time());

并对其进行编码,然后通过get发送。加密的消息每天都会改变,因此明显难以闯入。

在远程服务器上,您从get读取加密消息。使用您用于编码的相同密钥对其进行解码,并检查一切是否正常(这意味着,如果字符串被正确解码并且日期是今天的日期)。如果一切正常,您可以启动脚本。

您也可以使用更简单的方法,例如涉及md5()

在主服务器上使用get参数调用您的页面,如下所示:

$get = md5('your secret phrase, the longer the better'.date('Y-m-d', time()));
远程服务器上的

,当带有get参数的请求到来时,请执行相同操作,并检查您生成的md5是否等于来自get的md5。如果是,请运行脚本。

当然,您必须以某种方式远程调用您的远程服务器......但我认为您可以在主服务器上运行cron,这样就不会出现问题。

答案 1 :(得分:0)

如果您使用的是MySQL数据库,那么MySQL Event management可能会为您提供解决方案;当然,这一切都取决于您的托管服务提供商是否允许您将MySQL配置为shell执行PHP脚本来进行邮件发送。