我在 AWS 上有一个生产系统并使用 Laravel Forge。有一个正在处理作业的默认队列。
我已经创建了许多作业,现在希望删除它们(因为它们需要很多小时才能完成,而且我意识到我的输入数据很糟糕)。我创建了一个具有良好数据的新作业,但只有在所有其他作业完成后才会对其进行处理。
如何删除所有作业?
redis
它之前是使用队列驱动程序设置的。我不知道如何删除作业,因此我将驱动程序切换到database
,并重新启动服务器,认为这至少会让作业停止处理。然而,令我沮丧的是,它们仍在继续处理:-(
我什至从 forge ui 中删除了工作程序并重新启动了服务器:作业仍在处理。
为什么作业会继续被处理?
我怎样才能阻止他们?
我们的电子邮件无法使用Redis Queue使用Laravel发送.
触发错误的代码是: ->onQueue('emails')
$job = (new SendNewEmail($sender, $recipients))->onQueue('emails');
$job_result = $this->dispatch($job);
Run Code Online (Sandbox Code Playgroud)
结合这项工作:
use InteractsWithQueue;
Run Code Online (Sandbox Code Playgroud)
我们的错误信息是:
Feb 09 17:15:57 laravel: message repeated 7947 times: [ production.ERROR: exception 'Swift_TransportException' with message 'Expected response code 354 but got code "550", with message "550 5.7.0 Requested action not taken: too many emails per second "' in /home/laravel/app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:383 Stack trace: #0 /home/laravel/app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(281):
Run Code Online (Sandbox Code Playgroud)
我们的错误只发生在使用Sendgrid而不是Mailtrap,这会欺骗电子邮件发送.我和Sendgrid谈过,电子邮件从未触及他们的服务器,当我的错误发生时,他们的服务完全处于活动状态.所以,错误似乎在我的最后.
有什么想法吗?
我刚刚在.env文件中更改了一个常量.使用php-cli(通过修补程序)正确显示新值,但不能在我的Web应用程序(php-fpm)中显示.
到目前为止,我已按照建议尝试了一切:
sudo service nginx restart
sudo service php7.0-fpm restart
sudo service php7.0-fpm reload
Run Code Online (Sandbox Code Playgroud)
.
php artisan config:cache
Run Code Online (Sandbox Code Playgroud)
这将在bootstrap/cache/config.php中生成缓存配置文件
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)
这将删除bootstrap/cache/config.php中的缓存配置文件
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)
究竟是做什么的?它清楚了什么类型的缓存?
php artisan clear-compiled
Run Code Online (Sandbox Code Playgroud)
这个清楚的编译类
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
这将生成/更新composer autoload文件.
我有一些不属于任何配置文件的.env变量.因此,运行任何工匠命令对我来说都是无用的.
上述php artisan命令都没有直接处理$ _ENV.
似乎$ _ENV存储在服务器中的某个位置,并且一旦填充了属性,laravel就无法更新它.
我发现的唯一解决方案是重启服务器.
我正在运行一个Laravel Forge实例.
在Laravel 4.2和Laravel Forge上
我犯了一个错误,不小心将一些代码推送到生产服务器上,但是有一个错误,它将一个作业推送到队列而不删除它一旦完成.现在我不能再推送队列中的任何东西,我得到:
Pheanstalk_Exception JOB_TOO_BIG:作业数据超出服务器强制限制
我能做什么?
我正在尝试使用Laravel Forge部署Laravel PHP项目.我已正确连接到github上的我的存储库.但是,当我点击部署时,如果我去网站的公共IP,我只看到:
"No input file specified."
Run Code Online (Sandbox Code Playgroud)
在页面上.
我不知道为什么会出现这种行为.
如果我转到最新的部署日志,我会看到:
/home/forge/.forge/provision-433327.sh: line 1: cd: /home/forge/default/laravel: No such file or directory
fatal: Not a git repository (or any of the parent directories): .git
Composer could not find a composer.json file in /home/forge
To initialize a project, please create a composer.json file as described in the http://getcomposer.org/ "Getting Started" section
Could not open input file: artisan
Run Code Online (Sandbox Code Playgroud)
但是,我的laravel文件夹中有一个composer.json文件....
有任何想法吗?先感谢您.
我不明白为什么在laravel forge和laravel宅基地上的guzzle请求真的很慢.我没有更改锻造和宅基地的默认服务器配置.
像这样的每个简单的请求......
$client = new GuzzleHttp\Client();
$response = $client->get('path-to-my-api');
Run Code Online (Sandbox Code Playgroud)
...大约需要150ms(在宅基地和锻造处).这附加在每个请求(相同的网络或互联网)上.我读了一些关于guzzle的帖子,对于每个用户来说似乎都非常快,但对我来说却不是.
版本:
真的很奇怪的是,当我这样做时(异步)......
$req = $client->createRequest('GET', 'path-to-my-api', ['future' => true]);
$client->send($req)->then(function ($response) {
});
Run Code Online (Sandbox Code Playgroud)
......大约需要10毫秒.这很好,但我不明白为什么.而且我不想执行异步请求.
也许我的时间测量是错误的,但我认为这是好的:我使用这样的PHP调试栏:
// .....
// synch
Debugbar::startMeasure('synch','SYNCH Request');
$response = $client->get('path-to-my-api');
Debugbar::stopMeasure('synch');
// asynch
Debugbar::startMeasure('asynch','ASYNCH Request');
$req = $client->createRequest('GET', 'path-to-my-api', ['future' => true]);
$client->send($req)->then(function ($response) {
Debugbar::stopMeasure('asynch');
});
Run Code Online (Sandbox Code Playgroud)
我知道回答这个问题并不容易(因为它含糊不清),但我现在还不知道:(.如果你愿意,我可以编辑它.非常感谢.
是否可以让多个顶级域指向同一个站点?.com/.net/.eu等...
我在Laravel Forge创建了一个网站,你必须告诉他你的网站将要进入的域名.这适用于.com域名,但其他tld的呢?我是否必须创建多个站点,是否必须在服务器本身(DNS)上更改它或是否是其他任何方法?
我在 DigitalOcean 液滴中使用 Laravel Forge。我需要向我的一个客户端授予对服务器上特定目录的 SFTP 访问权限。他只需要对该目录进行读/写访问,而我在设置方面遇到了问题。
我已经按照https://bensmann.no/restrict-sftp-users-to-home-folder/ 中的步骤操作,但我被卡住了,因为 Forge 不允许密码身份验证,只能通过公共/私有 SSH 密钥...
有人做过类似的事情吗?完成它的最佳方法是什么?
提前谢谢了。
我试图将 laravel-forge 中服务器的 SSH 密钥添加到 bitbucket。ssh 密钥通常位于~/.ssh/id_rsa.pub
laravel-forge 终端内。Bitbucket 不允许我添加这个。通常通过单击“设置”下的“访问密钥”将其添加到 bitbucket 中。错误消息是:that key has already been added by a user
。但我找不到团队中的其他用户添加了它。bitbucket 网站无法显示哪个用户添加了它。
我将Browsershot(使用Puppeteer)与 Laravel 一起使用。我让它在本地开发环境(Mac、Laravel Valet)中完美运行,但是当在 Forge 配置的服务器上运行它时,我在日志文件中收到以下错误(我已用占位符替换了敏感 URL):
local.ERROR: The command "PATH=$PATH:/usr/local/bin NODE_PATH=`/usr/bin/node /usr/bin/npm root -g` /usr/bin/node '/home/forge/my-app.co.uk/vendor/spatie/browsershot/src/../bin/browser.js' '{"url":"https:\/\/my-test-site.com\/about.html","action":"screenshot","options":{"type":"png","path":"\/home\/forge\/my-app.com\/storage\/screenshots\/13\/full\/21.jpg","args":[],"viewport":{"width":1400,"height":1080},"fullPage":true,"waitUntil":"networkidle0"}}'" failed.
Exit Code: 1(General error)
Run Code Online (Sandbox Code Playgroud)
我已按照自述文件中的说明安装最新版本的稳定 Chrome:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget …
Run Code Online (Sandbox Code Playgroud) laravel-forge ×10
laravel ×8
php ×3
bitbucket ×1
curl ×1
guzzle ×1
laravel-4 ×1
laravel-5 ×1
laravel-5.2 ×1
laravel-7 ×1
node.js ×1
pheanstalk ×1
puppeteer ×1
queue ×1
sftp ×1
smtp ×1
swiftmailer ×1