我很难在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正确填充。
答案 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
我认为这应该有所帮助