我有一个弹性beanstalk应用程序,它同时使用Web层和工作层.通过SQS将作业从Web层卸载到工作层,以使面向Web的服务器保持快速.两种环境都使用完全相同的代码库,并在其下使用RDS实例.
我需要在工作层的领导服务器上运行一个cron作业.我创建了一个.ebextensions文件夹,其中包含一个调用crontab它的文件(它是一个Laravel Web应用程序):
* * * * * root php /var/www/html/artisan do:something:with:database
Run Code Online (Sandbox Code Playgroud)
然后,我创建了一个名为的文件01cronjobs.config,它更新了root下的环境crontab,如下所示:
container_commands:
01_remove_old_cron_jobs:
command: "crontab -r || exit 0"
02_cronjobs:
command: "cat .ebextensions/crontab | crontab"
leader_only: true
Run Code Online (Sandbox Code Playgroud)
.. 都好.现在,我想使用该eb deploy命令将其部署到EB .但是,我只希望工作层承担cron作业,因为我们只能有一台服务器在整个组中运行crons.
有没有办法告诉ebextensions配置文件只在工作层上运行config命令?worker_only: true这里的东西会很棒,但它似乎并不存在.
任何人都可以提供一些有关如何实现这一目标的见解吗?谢谢.
我正在使用Laravel构建API.我想将数据传递给基本控制器中的函数,并从那里通过Response :: json()提供JSON(原因是响应方法执行基准测试和日志记录等)
这有效:
<?php
public function show($id)
{
$data = Member::find($id);
return Response::json($data);
}
Run Code Online (Sandbox Code Playgroud)
这不是:
<?php
public function show($id)
{
$data = Member::find($id);
$this->respond($data);
}
private function respond($data)
{
return Response::json($data);
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么响应:json()不喜欢被弹出另一个函数?
如果我echo Response::json($data)而不是return它输出完整的响应,包括标题.
所有输入赞赏.谢谢.