当我尝试调用由 PHP 编程的 GET API 时,我遇到了好几次 http 504 网关超时错误。
这是我的服务器和 AWS 环境。
从一些关于 504 网关超时的文章,我已经尝试修改这些设置:
# ELB
idle timeout => 300
# php.ini
max_execution_time => 301
max_input_time => 301
# httpd conf
MaxKeepAliveRequests => 100
KeepAliveTimeout => 30
但所有这些对我都没有帮助,有时仍然会出现 504 网关超时。
我的 php 脚本不是很长的脚本,它只是从 mysql 数据库(AWS RDS)的 3 个表中获取数据并将数据返回给客户端,没有上传文件或生成大文件,所以我认为执行时间不是问题.
奇怪的是,504 gateway timeout error 并不是每次都会发生,大部分时间都是正常的,只是有时候会发生,到现在为止,我仍然不明白什么时候会发生 504 error,这真的很奇怪,如果有人可以给我一些关于如何解决这个问题的建议,这对我来说真的是一个很大的帮助。
=== 新更新 ===
我刚刚在我的 php 代码中发现了一个问题,我认为这是带有自动加载问题的命名空间。
我在同一个文件夹中有 2 个 php 文件,这意味着 2 个类具有相同的命名空间
文件:
My/Namespace
- Class1.php
- Class2.php
类和命名空间:
1级
// Class1
namespace My\Namespace;
class Class1 {
public static function getInstance() {
//return...
}
}
2级
// Class2
namespace My\Namespace;
class Class2 {
public static function getInstance() {
//return...
}
public function getClass1Instance() {
$class1 = Class1::getInstance();
return $class1;
}
}
在 Class2.php 中我尝试调用 Class1 的静态函数,但我没有添加“使用命名空间”,所以我在 Class2.php 中添加以下行
use My\Namespace\Class1;
问题解决了!但是我仍然不确定为什么我应该在 Class2.php 中添加“使用命名空间”,Class1 和 Class2 都在同一个命名空间中,即使它们在同一个命名空间中,我是否应该添加“使用命名空间”?
附注我发现这个命名空间问题是因为当 504 网关错误发生时,我尝试在短时间内多次调用 API,并且出现 php 错误消息并告诉我
"Class1 is not found in Class2.php"
但有时会显示 php 错误信息
"Cannot call a overloaded function in Class2.php, getClass1Instance()"
希望我能就这个问题提供足够的信息,并感谢所有留下评论或回答我问题的人,m(_ _)m
最佳答案
建议你看一下ELB的Health Check。
如果未正确配置,健康检查是看似随机的 504 错误的来源。当 ELB 认为您的服务器不“健康”时,ELB 会向最终用户回答 504,并且该 504 错误不会记录在您的 PHP 环境中的任何地方,因为它是在 ELB 中生成的。
参见 http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-healthcheck.html
关于php - AWS ec2 上的 504 网关超时,没有执行长的 php 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30288032/
我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
大家好!我想知道Ruby中未使用语法ClassName.method_name调用的方法是如何工作的。我头脑中的一些是puts、print、gets、chomp。可以在不使用点运算符的情况下调用这些方法。为什么是这样?他们来自哪里?我怎样才能看到这些方法的完整列表? 最佳答案 Kernel中的所有方法都可用于Object类的所有对象或从Object派生的任何类。您可以使用Kernel.instance_methods列出它们。 关于没有类的Ruby方法?,我们在StackOverflow
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r
如何在Ruby中获取BasicObject实例的类名?例如,假设我有这个:classMyObjectSystem我怎样才能使这段代码成功?编辑:我发现Object的实例方法class被定义为returnrb_class_real(CLASS_OF(obj));。有什么方法可以从Ruby中使用它? 最佳答案 我花了一些时间研究irb并想出了这个:classBasicObjectdefclassklass=class这将为任何从BasicObject继承的对象提供一个#class您可以调用的方法。编辑评论中要求的进一步解释:假设你有对象