Drupal 多站点中的 CRON 作业

发布于 2024-11-03 04:10:47 字数 223 浏览 1 评论 0原文

我有 5 个站点(Drupal 多站点)。我想执行一个在所有 5 个站点上运行 cron.php 的脚本。

0 0 * * * wget -O - -q -t 1 h**p://site1/cron.php

0 0 * * * wget -O - -q -t 1 h**p://site2/cron.php  
...

脚本如何分析域名并在shell命令中执行?

I have 5 sites (Drupal multisites). I would like to perform a script that runs cron.php on all of the 5 sites.

0 0 * * * wget -O - -q -t 1 h**p://site1/cron.php

0 0 * * * wget -O - -q -t 1 h**p://site2/cron.php  
...

How can a script analyze domain name and executes in shell command?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寂寞美少年 2024-11-10 04:10:47

最重要的是确定是否需要为所有站点运行 Cron。如果多个站点使用相同的数据库,则不需要:只需为“主”站点运行一次即可。

如果您有多个数据库,那么由于性能调整和资源可用性的原因,通过为每个站点运行 cron 的脚本来运行 cron 可能仍然不是一个好主意。
如果数百个站点同时打开 HTTP 套接字来获取最新的推文,就会出现阻塞。最好的方法是将其分散到我们的漏洞中:六十个站点相继运行 cron。

也就是说,这是一个 bash 脚本。在 Debian/Ubuntu 机器上另存为 /etc/cron.d/drupal

 for site in `find /path/to/drupal/sites/ -type d -name '*.*' -printf "%fname\n"`; do
   wget -O - -q -t 1 http://$site/cron.php
   #you could do a "sleep 60" to wait a minute before calling the next cron here.
 done   

如果您的站点目录包含的目录多于“all、default 和 domainname.tld”,那么您可能需要改进正则表达式查找(*.*)。

Most important is to determine if you need to run Cron at all for all sites. If multisites use the same database there is no need: just run it once for the "main" site.

If you have multiple databases, it is probably still a bad idea to run cron trough a script that runs it for every site, because of performance-tuning and resource availability.
If hundred sites all at once open HTTP sockets to pull in the latest tweets, something will choke. Best is to spread this out over the hole our: sixty sites running cron one after another.

That said, here is a bash script. save as /etc/cron.d/drupal on Debian/Ubuntu machines:

 for site in `find /path/to/drupal/sites/ -type d -name '*.*' -printf "%fname\n"`; do
   wget -O - -q -t 1 http://$site/cron.php
   #you could do a "sleep 60" to wait a minute before calling the next cron here.
 done   

If your sites directory contains more directories then "all, default and domainname.tld" then you might want to improve the regular expression for find (*.*).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文