我已经找到了这个,我确实找到了一些讨论这个问题的话题,但是我觉得这些都不是我想去的方式,所以我希望能在这里得到更好的消化.
我想从上次更新用户时获取时间戳.
$user->updated_at
Run Code Online (Sandbox Code Playgroud)
如果我运行它,它给了我这个错误
Object of class Carbon\Carbon could not be converted to int
Run Code Online (Sandbox Code Playgroud)
这是因为它在Laravel 5.2中返回一个Carbon实例,我只需要时间戳.
Carbon {#303 ?
+"date": "2017-01-04 00:35:38.000000"
+"timezone_type": 3
+"timezone": "UTC"
}
Run Code Online (Sandbox Code Playgroud)
我如何从碳实例中获取"日期",所以我只得到2017-01-04 00:35:38- 我不知道.000000来自哪里,因为这不会出现在数据库中.在MySQL数据库中,它只显示2016-07-20 20:23:07类型timestamp.
希望得到一些指示和建议
在 Laravel 的内核中,我有:
protected $commands = [
Commands\SendRenewEmails::class,
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
$schedule->command('renew:emails')
->daily();
}
Run Code Online (Sandbox Code Playgroud)
renew:emails如果我通过 Artisan 手动运行该函数,则上述函数将按预期工作。
在我的 crontab 中我有:
* */8 * * * cd /path-to-my-project && php artisan schedule:run >> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
我让它每 8 小时运行一次,而不是每分钟运行一次* * * * *,因为这是为了测试而进行的,只是为了确保该任务不是每分钟运行一次。
那么Laravel如何知道何时在内核上运行日常工作,以及何时发生?
从这个设置(这似乎是 Laravel 中 cronjobs 的基本设置,但每分钟运行一次而不是每 8 小时运行一次)来看,没有日志(我可以看到),并且数据库中没有表来跟踪这一点。
因此,如果我将 cron 设置为 …
我需要获取用户的IP地址”。
我找到了这篇文章如何在Laravel 5.1中获取客户端IP地址?
上述文章使用了 Request::ip();
但是,此方法返回我的服务器IP地址。据我从其他来源了解到,这是在站点为localhost时发生的-但是站点是托管的,并且位于服务器上。
这个站点是在线的并且在线的,但是它可能称为localhost,因为该站点可能位于其自己的服务器上(我没有服务器配置方面的经验,只能知道这是不是真的)。
当我连接到数据库主机时,我也使用localhost引用,而不是使用mysql.phpmyadmin.hosting.com数据库主机。因此,我的猜测是,该Request::ip();返回值返回服务器ip,因为该站点以某种方式位于localhost。
但是,如果我使用$ _SERVER ['HTTP_X_FORWARDED_FOR']; 我得到正确的IP地址。
现在我的最后一个问题是:使用安全吗?还有使用Laravel函数发出此请求的另一种方法吗?
据我了解,$ _ SERVER ['HTTP_X_FORWARDED_FOR']; 根据如何在PHP中获取客户端IP地址,可能会有安全漏洞?。
我可以$_SERVER['HTTP_X_FORWARDED_FOR'];安全使用而不必担心吗?如果没有,我可以采取其他方法安全地获得用户IP地址吗?