2013-03-30 3 views
3

J'ai un problème sur la façon de déterminer l'environnement de l'application pendant un cronjob. J'ai actuellement 2 environnements: un environnement de production et de test. Ils utilisent tous deux leur propre base de données.Comment déterminer l'environnement dans un cronjob

Je détermine l'environnement actuel en fonction de l'URL. Par exemple: dev.domain.com définit l'environnement sur testing et domain.com le définit en production.

Cela fonctionne parfaitement. Cependant, cela ne fonctionne pas pour cronjobs. Parce qu'un cronjob n'obtient pas de domaine.

Comment est-ce que je pourrais résoudre cela tout en gardant les choses dynamiques?

C'est ce que le code ressemble actuellement:

if($_SERVER['SERVER_NAME'] == 'dev.domain.com' || $_SERVER['SERVER_NAME'] == 'domain.local') { 
    define('ENVIRONMENT', 'development'); 
}else if ($_SERVER['SERVER_NAME'] == 'domain.com'){ 
    define('ENVIRONMENT', 'production'); 
} 

Merci à l'avance.

Répondre

4

Vous pouvez transmettre le nom du serveur dans un travail cron. Exemple si votre commande php actuelle ressemble à.

php a.php --uri="/foo" 

Il deviendra

SERVER_NAME=dev.domain.com php a.php --uri="/foo" 
+0

Voici ce que ma commande actuelle de cronjob ressemble à:/usr/local/bin/php /home/domain/public_html/index.php/cron/mailque comment va Je passe le nom du serveur à cela? Mais de l'autre côté, mon environnement est défini dans index.php, pas dans la fonction cronjob que j'appelle. Donc je ne pense pas que ça marchera. – JohnHeroHD

+0

SERVER_NAME = dev.domain.com/usr/local/bin/php /home/domain/public_html/index.php/cron/mailque devrait fonctionner. –

+0

Oui, cela a fonctionné parfaitement! Merci! – JohnHeroHD