2017-02-06 2 views
1

J'ai un contrôleur dans le projet laravel dans/app/Http/Controllers. Le contrôleur appelé transferDataController.Laravel Cron Jobs - fonction de contrôleur

<?php 
namespace App\Http\Controllers; 
use DB; 
class TransferDataController extends Controller{ 
public function moveStTempSales(){ 



// then a lot of queries. 

    } 
} 

Je dois appeler cette fonction toutes les 15 minutes. Sans appeler l'API en utilisant l'URL sur un bouton ou certains éléments. Je lisais à propos de Laravel Schedule. Cela fonctionne sur Laravel 4? Et si oui, comment puis-je planifier cette fonction dans mon cas? J'ai une bonne connaissance des tâches serveur cron.

+0

Je dirais que c'est une mauvaise pratique de mettre trop de logique dans une action de contrôleur. Déplacez-le vers une fonction de classe de bibliothèque, puis vous pouvez appeler la même fonction à la fois à partir d'un contrôleur et d'une commande CLI, puis exécuter cette commande CLI à partir d'un cron. Je ne sais pas si le planificateur est disponible en L4 – apokryfos

+0

Si le refactoring n'est pas une option, vous pouvez toujours ajouter un curl http: // host/TransferData/moveStTempSales à vos tâches cron. – apokryfos

Répondre

2

Allez dans le répertoire suivant:

YourProject/app/console/Commandes

Dans ce dossier, vous créez pouvez créer un fichier de classe qui contient la fonction qui doit être appelée sur Cron.

maintenant sur le même chemin il y a un fichier: Kernel.php

Ce fichier contient:

$schedule->command(); 

qui doit être utilisé pour appeler la fonction de la classe en cours de création.

Après cette utilisation:

php artisan schedule:run 

pour exécuter la fonctionnalité.

Reference

+0

oui compris. Y at-il un moyen de garder la fonction dans mon contrôleur et de l'appeler dans le calendrier? –

+1

@ElioChamy: Je ne pense pas. –

+0

J'ai essayé une fonction dans le kernel.php puis php artisan schedule: fonctionne maintenant très bien, merci –