【发布时间】:2014-10-15 23:40:58
【问题描述】:
为了缩短一个很长的故事,我们曾经为一个客户项目拥有自己的服务器环境,但最终决定使用第三方托管解决方案 (Nexcess)。在此之前,我们有一个使用 webmin 作为界面的虚拟服务器,它在 Ubuntu 上运行。
我们的想法是在 ExpressionEngine 中包含一些模板,其中包含每小时每隔一段时间就会触发一次的函数。自然,这就是 Cron 发挥作用的地方。这些方法可以完美运行数周。
在迁移期间,Nexcess 承诺将所有内容移植过来(这是他们对我的公司和客户的吸引力的一部分。理论上,我们双方都不需要额外的工作)。
这些函数现在不再触发。
原件丢失了,现在替换为这些(我没有制作,很可能是 Nexcess)。他们没有到达模板,我知道这一点,因为我可以查看命中计数器。此外,手动触发每个模板可以提供所需的结果 - 因此代码本身就可以了。
Cron 命令是:
wget --user=cron --password='abc123'
-O - -t 5 https://example.com/site/shipping_process
wget --user=cron --password='abc123'
-O - -t 5 https://example.com/site/import
wget --user=cron --password='abc123'
-O - -t 5 https://example.com/site/stockupdate
*请注意,这些模板受到保护,因此必须提供用户名和密码才能直接访问。
关于什么是滞留有任何线索吗?
在 webmin 上,我实际上可以使用 Cron 运行测试并查看输出 - Nexcess 和“Siteworx”没有这样的运气(就我目前能够预测的范围而言)。
所以问题似乎是主机提供商使用的是过时的 Wget 版本。这个旧版本在 SSL 方面存在特殊问题,适用于我们的案例。他们建议我们使用 Curl 重建语句。
我们上面的内容可能是什么等价物(我正在积极研究这个问题)。
到目前为止,将以下内容放在一起,没有运气:
/usr/bin/curl -username cron:abc123 --silent https:example.com/site/stockupdate &>/dev/null
【问题讨论】:
-
如果从命令行调用这些命令会起作用吗?
-
其实没有!我试过了,它吐出错误..虽然想通了。与 Webmin 不同,显然我必须指定 wget 的路径。尽管如此,即使这样做了,也没有任何效果。
-
当您说“没有任何效果”时,您的意思是该命令在命令行中也不起作用吗?您是否尝试过通过 http 而不是 https?你试过没有密码要求的版本吗?
-
在 http 上使用它。我们不确定为什么,因为我们确实有一个有效的 SSL 证书。我们正在与主机提供商交谈——他们在查看完所有内容后最初的反应是“这不应该发生”。
标签: php cron crontab expressionengine