试图让队列在我的共享主机上工作,
php artisan队列:在我的共享主机上工作(通过cron)返回
[ErrorException]
Invalid argument supplied for foreach()
在我的日志文件中写了以下内容。
[2015-04-12 18:59:01] production.ERROR: exception 'ErrorException' with message 'Invalid argument supplied for foreach()' in /home/a109/vendor/symfony/console/Symfony/Component/Console/Input/ArgvInput.php:287 Stack trace:
#0 /home/a109/vendor/symfony/console/Symfony/Component/Console/Input/ArgvInput.php(287): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'Invalid argumen...', '/home/a109/vend...', 287, Array)
#1 /home/a109/vendor/symfony/console/Symfony/Component/Console/Application.php(823): Symfony\Component\Console\Input\ArgvInput->hasParameterOption(Array)
#2 /home/a109/vendor/symfony/console/Symfony/Component/Console/Application.php(123): Symfony\Component\Console\Application->configureIO(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#3 /home/a109/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(94): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 /home/a109/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#5 {main}
在供应商/symfony/console/symfony/Component/console/Input/ArgvInput中的第287行。这里有一个函数
/**
* Returns true if the raw parameters (not parsed) contain a value.
*
* This method is to be used to introspect the input parameters
* before they have been validated. It must be used carefully.
*
* @param string|array $values The value(s) to look for in the raw parameters (can be an array)
*
* @return bool true if the value is contained in the raw parameters
*/
public function hasParameterOption($values)
{
$values = (array) $values;
foreach ($this->tokens as $token) {
foreach ($values as $value) {
if ($token === $value || 0 === strpos($token, $value.'=')) {
return true;
}
}
}
return false;
}
这就是失败的傻瓜。
我怎么才能让这个工作?
自Laravel 5.7以来,有一个新的队列命令用于在空时停止工作:
php artisan队列:工作——空时停止
由于这主要是针对电子邮件或少量工作,我将其放在cronjob上,每分钟运行一次。我想说,这并不是一个每分钟处理20多个工作的解决方案,但对我的电子邮件有效。这将运行约5秒每分钟只是为了发送电子邮件,取决于多少电子邮件。
$php artisan make:命令SendConrectEmails
SendConrectEmails.php
中,更改:protected$签名='email: work';
句柄()
方法中,添加:return $this->call('queue:work', [
'--queue' => 'emails', // remove this if queue is default
'--stop-when-empty' => null,
]);
protected $commands = [
\App\Console\Commands\SendContactEmails::class
];
protected function schedule(Schedule $schedule)
{
$schedule->command('emails:work')->everyMinute();
// you can add ->withoutOverlapping(); if you think it won't finish in 1 minute
}
* * * * * /usr/local/bin/php /home/username/project/artisan schedule:run > /dev/null 2>&1
来源
--stop when empty
选项可用于指示工人处理所有作业,然后优雅地退出。如果要在队列为空后关闭容器,则在Docker容器内处理Laravel队列时,此选项非常有用:
php artisan队列:工作——空时停止
在自由节点由Comyn in#laravel回答
我不得不将cron命令更改为:
php -d register_argc_argv=On artisan queue:work
我有个问题。My laravel在共享主机上看不到图像。 我有公共文件夹在~/域/DOMAIN/public_html/APP和其余的文件在~/域/DOMAIN/文件。 我的文件正在上载到~/domains/DOMAIN/files/storage/app/public/uploads/avatars 但在应用程序中,我看不到这一点。 这是上传代码: 你能帮我做什么吗?
如何在hostgator共享主机上安装laravel php框架PHP版本5.2-AddType application/x-httpd-php53.PHP in.htaccess文件 我的问题:无法使用SSH安装composer:$curl-sShttps://getcomposer.org/installer |php获取错误:缺少phar扩展。请在不禁用phar的情况下安装或重新编译php
我部署我laravel 5.4项目在共享主机上使用子域我安装了作曲家,改变了路径的index.php,供应商路径,DB主机,用户名等。 我得到以下错误 致命错误:未捕获意外值异常:在"/存储/日志"中没有现有目录,并且无法构建:在 /vendor/monolog/monolog/src/Monolog/Handler/StreamH中拒绝权限andler.php:171 我尝试了以下命令:php
我已经开发了一个laravel web应用程序,我必须上传到已经有WordPress应用程序的主机上,文件系统如下所示: 我无法访问根文件夹,无法联机访问公共html,因此我在公共html中创建了两个文件夹(laravel后端,laravel前端)。 所以我所做的就是编辑索引。php以指向类似以下内容的laravel后端文件: 需要DIR/.../laravel后端/引导/autoload.php
我按照本教程安装Laravel 5上共享的cboard主机。一切顺利,但我得到一个错误,当我打开我的网站: 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请通过以下地址与服务器管理员联系:webmaster@naxon.co.il通知他们此错误发生的时间,以及您在此错误之前执行的操作。 有关此错误的详细信息,请参阅服务器错误日志。 此外,尝试使用ErrorDocument处理请
我的问题是:如何在共享网络主机的目录(而不是根目录)中运行laravel应用程序? 对于我的一些客户,我在他们选择的共享虚拟主机的根文件夹中运行Laravel应用程序,并从URL中删除 /public部分。为了完成这项工作,我将index.php移动到根文件夹,并将信息从index.php更改为: 现在我知道这可能会导致安全问题,但我已经找到了解决方案,共享网络主机的情况下。 我用来进行此更改的.