Digitalocean cron和Laravel

时间:2017-10-25 20:41:52

标签: php laravel cron digital-ocean

我很难在Digitalocean上运行cron作业。我注意到有两个不同的cron文件,我通过输入命令import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class main { public static void main(String[] args) throws IOException { URL testing = new URL("http://openlibrary.org/search.json?q=prolog"); BufferedReader in = new BufferedReader( new InputStreamReader(testing.openStream())); String inputLine; String test = null; int i =1; while ((inputLine = in.readLine()) != null) { if (inputLine == "\"title_suggest\":") { test = inputLine; } } in.close(); System.out.println(test); } } 到达/etc/crontab和另一个文件。

为了让它更加混乱,两者都有一些不同的“布局”。第一个:

crontab -e

和第二个:

* *     * * *   root    php /var/www/Laravel artisan schedule:run >> /home/laravel.log

这是Laravel调度程序部分:

* * * * * php /var/www/Laravel artisan schedule:run >> laravel.log

问题是protected $commands = [ 'App\Console\Commands\SyncAPIs', ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { $schedule->command('media:sync')->everyThirtyMinutes(); // sync for yesterday to eliminate discrepancies $schedule->command('media:sync ' . Carbon::yesterday())->dailyAt(6); } 确实被创建了,但我什么都没看到,我不知道我的命令是否真的被运行了。这是否意味着cron IS实际上正在运行?我如何调试问题,因为我没有在数据库中看到cron填充它。当我转到文件夹laravel.log并执行应该在调度程序中调用的命令时,dataabse正确填充。

3 个答案:

答案 0 :(得分:0)

您可能需要更改此行:

* * * * * php /var/www/Laravel artisan schedule:run >> laravel.log

到:

* * * * * /usr/bin/php /var/www/Laravel artisan schedule:run >> laravel.log

答案 1 :(得分:0)

我实际上找到了答案:

* * * * * php /var/www/Laravel/artisan schedule:run >> laravel.log

php在全球范围内有效,但artisan需要显示在我的Laravel主文件夹中的路径

答案 2 :(得分:0)

cd ~
crontab -u root -e
* * * * * php /var/www/laravelprojectname/artisan schedule:run 1>> /dev/null 2>&1
service cron restart
grep -i cron /var/log/syslog|tail -3

我认为这应该有所帮助