Unix Cron Job, erreur

  • Funny_Fuzz
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Jan 18, 2005
  • Messages: 1517
  • Status: Offline

Message Mars 11th, 2006, 1:55 am

Salut. C'est mon premier post dans le forum Linux.
J'ai une tâche de configuration en utilisant cPanel, et ont tout fait correctement, mais il ne semble pas aimer quelque chose dans mon code PHP Ive fait. Ive a dit à la tâche cron pour toutes les 5 minutes, d'exécuter un script dans mon répertoire des membres Status.php.
Le chemin d'accès est correct, le code est correct, la commande est correcte, mais pour quelque raison, il conserve la sortie:

/ home / sharepix / public_html / pixeljunk / États-Status.php: ligne 1:? php: Aucun fichier ou le répertoire / home / sharepix / public_html / pixeljunk / États-Status.php: ligne 2: erreur de syntaxe près inattendue jeton `" Config.php "/ home / sharepix / public_html / pixeljunk / États-Status.php : ligne 2: "include (" Config.php ");

Inside Etat-membre, j'ai:
[php] <? php
include ( "Config. php ");
$ result = mysql_db_query ($ Database, "select * from Member_List") or die (mysql_error ());

if (mysql_num_rows ($ result)) (
while ($ qry = mysql_fetch_array ($ result)) (

if ($ qry [Login] == "en ligne") (
$ time1 = $ qry [Last_Activity_Time_Hours];
$ time2 = $ qry [Last_Activity_Time_Minutes];

$ year = date ( "y");
$ day = date ( "d");
$ month = date ( "m");
$ heure = date ( "h");
$ minute1 = Date ( "i");
$ minute = $ minute1 + 10;
if ($ minute == 60) (
$ minute = 0;

$ time3 = date ( "Ymd H: i: s", mktime ($ hour, $ minute, 0, $ month, $ day, $ year));
)


if (($ time1 == date ( "H")) & & ($ time2 == $ time3)) (

include ( "Config. php ");
mysql_query ( "UPDATE SET Member_List» Login »=" Offline "WHERE Username = $ qry [Nom d'utilisateur]")
or die ( "Impossible de mettre à jour l'état de connexion des membres parce que". mysql_error ());

)


)



)
)
> [/ php]
Ive affiché dans la programmation de ce forum, mais ils m'ont dit mieux Id suggestions ici.
Toute aide les gars?
Merci d'avance!
THE BEST THINGS IN LIFE ARE FREE...
JOIN THE MEDIASHARK COMMUNITY TODAY!
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mars 11th, 2006, 1:55 am

  • this213
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Mar 01, 2004
  • Messages: 1242
  • Loc: ./
  • Status: Offline

Message Mars 11th, 2006, 12:59 pm

Vous avez besoin d'une ligne shebang sur le haut de votre script PHP Si vous essayez d'exécuter qu'à partir d'un shell:
Code: [ Select ]
#!/usr/bin/php

Le chemin doit pointer vers votre exécutable PHP. Si ce n'est pas le chemin correct, vous ne savez pas ce que le chemin correct est, vous pouvez essayer:
PHP Code: [ Select ]
<?php
 
echo `which php`;
 
?>
  1. <?php
  2.  
  3. echo `which php`;
  4.  
  5. ?>

dans un script web standard.
http://www.disabo.com
  • Funny_Fuzz
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Jan 18, 2005
  • Messages: 1517
  • Status: Offline

Message Mars 11th, 2006, 7:40 pm

Je ne semblent pas être en mesure de le faire à partir de Shell pour quelque raison. J'ai d'abord type "crontab-e". Ensuite, je tape dans le bon de commande, mais lorsque je appuyez sur Entrée pour exécuter la commande, ça va dans l'espace suivant. Des idées?
THE BEST THINGS IN LIFE ARE FREE...
JOIN THE MEDIASHARK COMMUNITY TODAY!
  • this213
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Mar 01, 2004
  • Messages: 1242
  • Loc: ./
  • Status: Offline

Message Mars 12th, 2006, 5:47 pm

ce qui se passe si vous appelez le script lui-même à partir de la ligne de commande?
http://www.disabo.com
  • Funny_Fuzz
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Jan 18, 2005
  • Messages: 1517
  • Status: Offline

Message Mars 12th, 2006, 7:13 pm

D'accord! J'ai finalement obtenu ce travail. Mais pas par shell. CPanel, je l'installer pour moi automatiquement. J'ai mis une ligne de code qui écrit quelque chose dans un fichier texte à chaque fois son exécution, afin que je puisse voir si les tâches récurrentes de travail est (qu'il est). Maintenant, le seul problème est: Je ne peux pas penser à une façon pour moi de corriger le code :? . Toutes les idées this213?

[php] <? php

$ file = fopen ( "Text. txt "," a ");
fwrite ($ file, "Si vous pouvez lire ceci, cron fonctionne!");
fclose ($ file);

include ( "Config. php ");
$ result = mysql_db_query ($ Database, "select * from Member_List") or die (mysql_error ());

if (mysql_num_rows ($ result)) (
while ($ qry = mysql_fetch_array ($ result)) (

if ($ qry [Login] == "en ligne") (
$ time1 = $ qry [Last_Activity_Time_Hours];
$ time2 = $ qry [Last_Activity_Time_Minutes];

$ year = date ( "y");
$ day = date ( "d");
$ month = date ( "m");
$ heure = date ( "h");
$ minute1 = Date ( "i");
$ minute = $ minute1 + 10;
if ($ minute == 60) (
$ minute = 0;

$ time3 = date ( "Ymd H: i: s", mktime ($ hour, $ minute, 0, $ month, $ day, $ year));
)


if (($ time1 == date ( "h")) & & ($ time3 - 10 == $ time2)) (

include ( "Config. php ");
mysql_query ( "UPDATE SET Member_List» Login »=" Offline "WHERE Username = $ qry [Nom d'utilisateur]")
or die ( "Impossible de mettre à jour l'état de connexion des membres parce que". mysql_error ());

)


)



)
)
> [/ php]
Que Im essayant de faire est de vérifier la dernière fois, chaque utilisateur a fait quelque chose sur mon site. Si rien n'a été fait pour environ 10 minutes, de changer leur statut de "hors connexion". Jai eu tout fonctionne ", sauf" pour le bit de contrôle, où si theyre inactif pendant 10 minutes. Toute aide s'il vous plaît!
THE BEST THINGS IN LIFE ARE FREE...
JOIN THE MEDIASHARK COMMUNITY TODAY!
  • this213
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Mar 01, 2004
  • Messages: 1242
  • Loc: ./
  • Status: Offline

Message Mars 14th, 2006, 12:22 pm

Funny_Fuzz a écrit:
Ce qui Im essayant de faire est, cochez la dernière fois que chaque utilisateur a fait quelque chose sur mon site. Si rien n'a été effectuée pendant environ 10 minutes, changer leur statut en "hors ligne".

Gosh, vous devriez avoir dit que dès le départ.

Au lieu de passer à travers tout cela, les rincer simplement à toutes les sessions périmées lorsque vous authentifier vos utilisateurs.

En d'autres termes, chaque fois qu'un utilisateur se connecte ou lorsque vous vérifiez une session utilisateur, simplement rincer toutes les sessions rassis en premier. En faisant cela, vous pouvez ensuite il suffit de tirer vos sessions encore bon pour votre "utilisateurs en ligne" Affichage ".

Je ne sais rien sur votre serveur spécifique, mais sur la plupart des systèmes * nix, si vous voulez exécuter un script PHP en ligne de commande, vous devez avoir une ligne shebang, si votre script doit ressembler à:
Code: [ Select ]
#!/usr/bin/php
<?php

$file = fopen("Text.txt","a");
fwrite($file,"If you can read this, cron job is working!");
fclose($file);
...
?>
  1. #!/usr/bin/php
  2. <?php
  3. $file = fopen("Text.txt","a");
  4. fwrite($file,"If you can read this, cron job is working!");
  5. fclose($file);
  6. ...
  7. ?>

Et puis, votre script doit être exécutable - au moins le mode 500 (je ne fais habituellement des scripts cron 700).

Sur une note un peu différente, ce serait plus efficace de l'écrire comme ceci:
Code: [ Select ]
#!/usr/bin/php
<?php
$string = '"If you can read this, cron job is working"';
`echo $string >> Text.txt`;
?>
  1. #!/usr/bin/php
  2. <?php
  3. $string = '"If you can read this, cron job is working"';
  4. `echo $string >> Text.txt`;
  5. ?>

Plutôt que d'utiliser fwrite et fopen, vous êtes en utilisant les appels système natif (les apostrophes inverses `` sont presque envie de faire shell_exec () ou exec () et system ()). Notez également que je joins les guillemets par des apostrophes pour qu'ils obtiennent transmis à l'instruction echo.
http://www.disabo.com
  • this213
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Mar 01, 2004
  • Messages: 1242
  • Loc: ./
  • Status: Offline

Message Mars 14th, 2006, 12:31 pm

Désolé pour le double post, mais je pensais que je devrais également mentionner que chaque fois que vous utilisez un script cron, vous devez utiliser le chemin complet vers le fichier. Ainsi, au lieu de "Text.txt", vous devriez avoir quelque chose comme "/ var / www / mydata / Text.txt" - ou que vous stockez que.
http://www.disabo.com

Afficher de l'information

  • Total des messages de ce sujet: 7 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 58 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC