如何用siteurl cron一个PHP?

时间:2014-04-08 13:11:27

标签: php cron

假设我有一个send.php文件,其中包含获取网站URL的功能(例如,取消订阅电子邮件),但电子邮件是由cron命令自动发送的,在这种情况下似乎是siteurl将无法正常工作,因为本地脚本根本没有URL?

当然,我可以在send.php中准确设置正确的网址,但如果我不想这样做,是否有任何解决方案?

修改

//siteurl in send.php
function siteURL(){
        $protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        $domainName = $_SERVER['HTTP_HOST'];
        return $protocol.$domainName;
}

cron

#cron to excude send.php
 */1 * *  *  * /usr/bin/php  /pathto/send.php

2 个答案:

答案 0 :(得分:2)

将URL传递给cron脚本,例如作为环境变量或CLI参数:

*/1 * *  *  * SITE_URL=example.com /usr/bin/php  /pathto/send.php
# or
*/1 * *  *  * /usr/bin/php /pathto/send.php example.com

在剧本中:

$siteURL = getenv('SITE_URL');
// or
$siteURL = $argv[1];

这是a)更好的替代方案a)通过网络服务器公开展示你的cron脚本,以及b)在非常需要它的情况下通过HTTP请求。

答案 1 :(得分:1)

curlwget与完整网址一起使用。

e.g:

* * * * * wget http://example.com/send.php

或:

* * * * * curl http://example.com/send.php

<强>更新

以下是一些差异:curl vs Wget

顺便说一下,我也使用了fetch,它缺少上面两个选项中的大多数选项,但它是我最喜欢的操作系统的本机,并且在下载单个页面时完成相同的工作。