Bonjour !
Je voulais savoir si il est possible de lancer une command symfony (dans mon cas j'ai créé une command loadUser)
En cherchant sur internet j'ai trouvé la commande exec de php mais je n'ai pas l'impression que ça fasse quelque chose.
Le but de cette page est qu'elle soit appelé via une cron sur un serveur OVH.
Voilà comment je fais :
<?php
$dbAlias = new PDO("mysql:host=xxxxxxx;dbname=xxxxxx", "xxxxxxxxx", "xxxxxxxx");
$dbAlias->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db = new PDO("mysql:host=xxxxxxxxx;dbname=xxxxxxxxx", "xxxxxxxxxxx", "xxxxxxxxxxx");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userStmt = $dbAlias->query("SELECT * FROM User_Import");
$users = $userStmt->fetchAll(PDO::FETCH_ASSOC);
$encours_stmt = $dbAlias->query("SELECT * FROM Encours_Import");
$encours = $encours_stmt->fetchAll(PDO::FETCH_ASSOC);
function placeholders($text, $count=0, $separator=","){
$result = array();
if($count > 0){
for($x=0; $x<$count; $x++){
$result[] = $text;
}
}
return implode($separator, $result);
}
foreach($users as $row){
$fields = implode(",", array_keys($row));
$test = placeholders("?", sizeof(array_values($row)), ",");
try{
$stmt = $db->prepare("INSERT INTO User_Import (".$fields.") VALUES (".$test.")");
if($stmt){
$stmt->execute(array_values($row));
}
}catch (PDOException $e){
echo $e->getMessage();
}
}
foreach ($encours as $encour){
$fields = implode(",", array_keys($encour));
$values = placeholders("?", sizeof(array_values($encour)), ",");
try{
$stmt = $db->prepare("INSERT INTO Encours_Import (".$fields.") VALUES (".$values.")");
if($stmt){
$stmt->execute(array_values($encour));
}
}catch (PDOException $e){
echo $e->getMessage();
}
}
exec("php ".__DIR__."bin/console loadUser");
?>
Console/cake c'est du cakePhp ça il me semble pas que ca soit ce que je recherche.
Bonjour,
Si j'ai bien compris, tu cherches à faire un script PHP, intégré à Symfony, que tu pourras lancé depuis la Crontab.
Pour ce faire, tu créés une classe Commande
//-- dans src/MonBundle/Command/testCommand.php
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
class testCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('test:maCommande')
->setDescription('Ceci est une commande de test')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
// Ici le code qui sera exécuté
}
}
Ensuite tu peux lancer cette commande avec "app/console test:maCommande".
Tu peux du coups inscrire l'éxecution de ce script dans ta crontab
*/5 * * * * php /chemin/vers/mon/projet/symfony/app/console test:maCommande
Pour une exécution toutes les 5 minutes par exemple.
Bonjour,
Merci pour ta solution mais j'ai déjà essayé. Le problème est que dans ma commande symfony j'ai une connexion à la base de données distante qui se vois refusée, alors que mon script php brut lui fonctionne, seulement j'ai besoin de la partie symfony pour traiter les utilisateurs.
Je vous ramène à mon poste sur ce problème qui n'est pas encore résolu à cette adresse
Donc si j'arrive à lancer une commande symfony dans mon script php tout est niquel.