2010-10-14 17 views
0

Je veux exécuter un script juste une fois en configurant un travail cron en utilisant la commande "at". J'utilise maintenant:Cron travail de php (à la commande pour être exact)

<?php 
include "config.php"; 
if (isset($_POST['add'])) 
{ 
$sql = mysql_query("INSERT INTO {$table}(msg) VALUES('{$_POST['msg']}')"); 
if ($sql) 
{ 
    $cmd = "wget /var/www/index.php?id=" . mysql_insert_id() . " | sudo at " . $_POST['runat']; 
    exec($cmd); 
    echo exec("atq"); 
    echo $cmd; 
} 
exit(); 
} 

echo "<form action='{$_SERVER['PHP_SELF']}' method='POST'>"; 
echo "<input type='text' name='msg' />"; 
echo "<input type='text' name='runat' />"; 
echo "<input type='submit' name='add' />"; 
echo "</form>"; 

?> 

Cependant, cela ne semble pas fonctionner. Est-ce que je fais ça bien? Ou pourriez-vous recommander quelque chose d'autre?

Répondre

0

Vous utilisez la commande at dans le mauvais sens. Vous devez echo command et le passer à at. Essayez comme ça:.

$cmd = "echo wget /var/www/index.php?id=" . mysql_insert_id() . " | sudo at " . $_POST['runat']; 
+0

Désolé, mais cela ne fonctionne pas :(Il n'y a pas d'emplois dans la file d'attente quand je lance « TAQ » ou « sudo TAQ » Peut-être que cela a quelque chose à voir avec les autorisations –

+0

@bah? : dans un premier temps, vous devriez essayer d'exécuter la même commande dans shell, peut-être qu'il n'y a pas de at disponible sur ce système, peut-être que le démon atd ne fonctionne pas, peut-être ... –

+0

Merci d'avoir aidé, mais j'ai déjà résolu mon problème. juste dû ajouter "www-data" utilisateur au fichier at.allow. :) –