CRON JOB В ДРУПАЛЬНОМ МУЛЬТИСАЙТЕ - PullRequest
0 голосов
/ 26 апреля 2011

У меня 5 сайтов (мультисайты Drupal).Я хотел бы выполнить скрипт, который запускает cron.php на всех 5 сайтах.

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

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

Как скрипт может анализировать доменное имя и выполняться в команде оболочки?

1 Ответ

0 голосов
/ 26 апреля 2011

Самое важное - определить, нужно ли вообще запускать Cron для всех сайтов. Если мультисайты используют одну и ту же базу данных, в этом нет необходимости: просто запустите ее один раз для «основного» сайта.

Если у вас несколько баз данных, вероятно, все еще плохая идея запускать cron через скрипт, который запускает его для каждого сайта, из-за настройки производительности и доступности ресурсов. Если сотни сайтов одновременно открывают HTTP-сокеты для добавления последних твитов, что-то задохнется. Лучше всего распространить это по нашей дыре: шестьдесят сайтов, работающих под управлением cron один за другим.

Тем не менее, вот скрипт bash. сохранить как /etc/cron.d/drupal на машинах Debian / Ubuntu:

 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", то вы можете улучшить регулярное выражение для find (*.*).

...