2012-12-15 5 views
-1

J'ai un fichier PHP pour donner aux utilisateurs une énergie si leur énergie est inférieure à leur max_energy comme ceci:Cronjob ne fonctionne pas

<?php 
if ($energy < $max_energy) { 
    $sql = "UPDATE users SET energy=(energy + 1) WHERE id='".$id."'"; 
    $res = mysql_query($sql); 
} 
?> 

Ceci est la ligne de commande sur mon serveur pour exécuter le cronjob:

/home/sites/psychowars.com/public_html/psychowars/cronjobs/energy.php 

Eh bien, quand je vais manuellement le lien psychowars.com/psychowars/cronjobs/energy.php il me donnera l'énergie 1 parce que mon énergie est inférieure à la $max_energy, mais la cronjob réelle devrait donner utilisateur 1 énergie tous les 2 m inutes, mais ça ne fait rien. Sont leurs raisons pourquoi?

+1

Où '$ energy' et' $ max_energy' sont-ils définis? – nickb

+0

Et la connexion db? –

+0

Toutes les variables sont définies au-dessus du code que j'ai collé – user1893203

Répondre

2

Un cronjob peut uniquement exécuter des fichiers exécutables. Vous devez donc exécuter le script avec l'exécutable php. Quelque chose comme cela pourrait fonctionner dans votre crontab:

/usr/bin/php -q /home/sites/psychowars.com/public_html/psychowars/cronjobs/energy.php 
+0

Je l'ai utilisé, mais je ne suis pas sûr que ça marche – user1893203

+0

Ca ne marche pas t semble fonctionner? Hmm Pensez que c'est le PHP? – user1893203

+0

Vous devriez peut-être essayer d'activer le rapport d'erreurs et écrire la sortie standard cronjob et la sortie d'erreur standard dans un fichier texte comme celui-ci (ajouter ceci à la ligne crontab): '> some_location/cron.log 2> & 1' – s1lence

1

Je l'ai rencontré ce problème avant où mes Cronjobs juste arrêter au hasard en cours d'exécution;

il suffit d'exécuter la commande suivante:

/etc/init.d/cron restart

Lorsque j'ai couru cette commande, mes cronjobs a commencé à courir à nouveau

Vous devez exécuter votre Cron par /etc/crontab

et un exemple ligne de mes cronjobs (pour courir chaque minute de chaque jour)

* * * * * root /usr/bin/php /var/www/cron.php Le * représentent le temps

root - représente l'utilisateur

/usr/bin/php est le répertoire que je lance mon PHP

/var/www/cron.php - est le fichier php va être exécuté en PHP-CLI

Une autre chose, assurez-vous que vous avez php5-cli installé pour s'assurer que PHP peut fonctionner à partir de la ligne de commande PHP.

+0

ce que mon serveur montre à utiliser .. Les lignes de commande ci-dessous seront exécutées sur le serveur Web pour vous aux intervalles que vous avez sélectionnés. S'il vous plaît noter que le chemin est absolu, donc si votre script s'appelle test.pl et se trouve dans votre répertoire public_html/alors le chemin complet serait: - /home/sites/psychowars.com/public_html/test.pl. – user1893203

+0

Attendez .. Utilisez-vous un serveur? ou hébergeur? –

+0

Je suis sur mon serveur – user1893203