我有一个laravel项目与codebird-php
lib那里。我试图设置一个cron作业来开始安排我的流媒体命令。
在我的本地机器上使用Ubuntu 16,它可以完美运行,每分钟创建一个流向Twitter并在55秒内死亡。Ubuntu 15继续通过cron的codebird-php流不工作
但在远程VPS上它没有安排我的命令。我已经通过cron尝试了它,通过在终端中进行提示并且没有任何影响。任何人都可以解释我哪里有一个愚蠢的错误,在cron工作Ubuntu 15.04和Ubuntu 16.04有什么区别? 这是命令的代码: 连接命令设置流,并开始他们
class ConnectToStreamingAPI extends Command
{
protected $signature = 'connect';
protected $run = [];
protected $users;
protected $description = 'Connect to the Twitter Streaming API to search tweets by keywords';
protected $twitterStream;
public function __construct(User $user)
{
$this->users = $user::where('id', '>', '1')->pluck('id')->toArray();
parent::__construct();
}
public function handle()
{
//set_time_limit(59);
$this->setRun();
$this->runUserStreamCommand();
return "Fired";
}
protected function setRun()
{
foreach ($this->users as $user) {
$this->addToRun($user);
}
}
protected function runUserStreamCommand()
{
foreach ($this->run as $process) {
$process->setPty(true);
$process->start();
}
$count = count($this->run);
while (count($this->run) > 0) {
foreach ($this->run as $key => $process) {
$childProcess = $process->getPid() + $count;
try {
$process->checkTimeout();
} catch (ProcessTimedOutException $e) {
exec("kill -15 " . $childProcess);
}
if (!$process->isRunning()) {
unset($this->run[$key]);
}
}
}
}
protected function addToRun($user_id)
{
$this->run[] = new Process("php /path/to/artisan stream $user_id", null, null, null, 50);
}
}
这里是流命令
class StreamingCommands extends Command
{
protected $signature = 'stream {id}';
protected $description = 'create stream to twitter for one user';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$id = $this->argument('id');
$user = User::find($id);
Codebird::setConsumerKey($user->consumer_key, $user->consumer_secret);
$stream = new TwitterStream();
$stream->setToken($user->twitterData->token, $user->twitterData->token_secret);
$keywordArray = array();
$ids = array();
foreach ($user->campaigns as $campaign) {
$ids[] = $campaign->id;
$keywordArray = array_merge($keywordArray, Keyword::whereCampaignId($campaign->id)->pluck('keyword')->toArray());
}
$keywords = Keyword::whereIn('campaign_id', $ids)->where('rejected', 0)->get();
$stream->setKeywords($keywords);
$stream->setStreamingCallback('processTweet');
$keywords = implode(',', $keywordArray);
$this->info("start stream to user $id");
$stream->statuses_filter('track=' . $keywords);
}
}
和cron作业 * * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
和进度只是一个 $schedule->command('connect')->everyMinute();
您是否收到任何错误讯息? –
storage/logs/laravel.log? –
绝对明确:( –