我正在服务器上运行nohup进程.当我试图杀死它时,我的腻子控制台会关闭.
这是我尝试查找进程ID的方法:
ps -ef |grep nohup
Run Code Online (Sandbox Code Playgroud)
这是杀人的命令
kill -9 1787 787
Run Code Online (Sandbox Code Playgroud) 我是Laravel的新手.我试图打开http://localhost/test/public/,我得到了
异常处理程序出错.
我用Google搜索并更改了存储目录的权限,chmod -R 777 app/storage但无济于事.
我改变debug=>true了app.php并访问了页面并在异常处理程序中得到了错误:
无法打开流或文件"/var/www/html/test/app/storage/logs/laravel.log":无法打开流:/ var/www/html/test/bootstrap/compiled中的权限被拒绝. PHP:8423
然后我使用该命令更改了存储目录的权限,chmod -R 644 app/storage并且"异常处理程序中的错误"错误消失了并且加载了一个页面.但在那里我得到了这个:
file_put_contents(/var/www/html/laravel/app/storage/meta/services.json):无法打开流:权限被拒绝
我正在努力让主管努力确保我的队列系统始终在运行.
以下是我采取的步骤,我从各种来源拼凑而成:(以root身份或超级用户身份)
1)$ easy_install主管
2)$ echo_supervisord_conf> /etc/supervisord.conf
3)$ sudo vi supervisord.conf
4)将以下内容粘贴到文件末尾:
command =/usr/bin/php/path/to/AppName/artisan --env = production --timeout = 240 queue:listen
5)$ supervisord -c /etc/supervisord.conf
6)$ supervisorctl
7)主管>状态
主管>
它没有显示任何内容.
我正在尝试在容器启动并运行后运行以下命令。
php artisan queue:work -n -q &
Run Code Online (Sandbox Code Playgroud)
"&" 之所以存在是因为守护程序选项已被弃用,后来从 Laravel 中删除。
但是,这完全破坏了我的容器启动。
CMD ["php", "artisan", "queue:work", "-n", "-q", "&"]
Run Code Online (Sandbox Code Playgroud)
我应该如何以 Docker 的方式做到这一点?
编辑:
使用 docker-compose 我将此行添加到我的 docker-compose.yml 文件中
command: bash -c 'php artisan queue:work -n -q;'
Run Code Online (Sandbox Code Playgroud)
容器已启动但未提供任何请求:S
使用这个:
command: bash -c 'php artisan queue:work -n -q &; echo "runs"; tail -f /dev/null'
Run Code Online (Sandbox Code Playgroud)
容器启动后停止
最终解决方案
所以最后我想也许负责交付应用程序的服务器不应该是运行队列的服务器。
因此,我启动了同一个 docker 镜像的另一个实例,其唯一目的是运行 artisan queue:work。
我在一个laravel 5.1应用程序中创建了一个新的Job,在Homestead VM中运行.我已将其设置为排队并在handle方法中包含代码.
handle()方法之前预期传递一个param,但不再需要,我从handle方法中删除了param.
但是,当队列运行作业时,我收到一条错误消息:
[2015-06-17 14:08:46] local.ERROR: exception 'ErrorException' with message 'Missing argument 1 for Simile\Jobs\SpecialJob::handle()' in /home/vagrant/Code/BitBucket/simile-app/app/Jobs/SpecialJob.php:31
Run Code Online (Sandbox Code Playgroud)
该文件的第31行是:
public function handle()
Run Code Online (Sandbox Code Playgroud)
它不再期望任何参数,除非有一个没有记录的默认参数.
现在我做的任何更改,包括注释,当我运行队列时,看不到作业文件中的所有内容.我仍然会得到同样的错误.
香港专业教育学院试图重新启动nginx,php5-fpm,supervisor,beanstalkd,和正在运行:artisan cache:clear,artisan clear-compiled,artisan optimize,composer dumpautoload.
什么都行不通.
我得到laravel看到任何更新到Job文件的唯一方法是重启VM.vagrant halt那么vagrant up.
该作业在控制台命令中触发,如下所示:
$this->dispatch(new SpecialJob($site->id));
Run Code Online (Sandbox Code Playgroud)
以下是该SpecialJob.php文件的完整代码:
我尝试创建另一个新Job并进行测试,得到相同的结果.
所有其他非作业文件立即更新,没有问题.它只是作业文件.就像旧的副本被缓存在我无法找到的地方.
我正在开发Laravel 5.0中的一个网站,并在Windows Server2012中托管.
我遇到了一个问题,即我从另一个函数A调用控制器中的函数B,我希望调用另一个函数B的函数A不等待函数B的完成.并且功能B在后台完成并独立形成用户终止页面和功能A返回.
我搜索了这个,发现这可以通过cron中的作业来实现,如windows中的作业,pcntl_fork()和laravel中的队列功能.我是初学者.
请帮忙!提前致谢.
我有工作要发送几封电子邮件。
在我的控制器中,我称之为工作:
dispatch(new SendStartPatEmail($data));
Run Code Online (Sandbox Code Playgroud)
记录保存在表作业中。
但是要执行这项工作,我必须php artisan queued:work手动运行。我怎样才能自动执行此操作?
laravel ×5
php ×4
laravel-5 ×2
amazon-ami ×1
amazon-linux ×1
bash ×1
cron ×1
docker ×1
exception ×1
grep ×1
homestead ×1
laravel-4 ×1
laravel-jobs ×1
linux ×1
lumen ×1
nohup ×1
queue ×1
supervisord ×1