我有一个网站,它是托管在一个外部网络托管服务,其中除其他事项,允许用户订阅事件,并被添加到注册列表。
我希望能够在事件发生前一天通过电子邮件提醒这些用户,以更新的位置信息等提醒他们。
目前,我的主机服务不支持cron作业,我认为可以提供一些方法来实现这一点。
我有一个想法,当任何用户访问最接近我发送电子邮件的时间的首页时执行该函数,但这似乎是一个糟糕的选择,让我认为必须有一个更好的方法。
我知道一些公司将执行您的脚本在一个特定的时间收费,但我希望能够更灵活地配置它直接在我的网站。
我想知道PHP中是否有任何API可以让我做到这一点,或者如果我的想法是实现我的目标的最佳方式,或者我错过了一些明显的…
感谢您的帮助。
看看mcrypt_encrypt
和mcrypt_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
,因此这不会是一个问题。
如果你使用的是MySQL数据库,那么MySQL事件管理可以为你提供一个解决方案;当然,这一切都取决于您的主机提供商是否允许您将MySQL配置为shell执行PHP脚本来处理邮件。