Articles of PHP

504在nginx上使用PHP进行网关超时

我正在尝试从运行Apache的开发计算机将PHP Laravel应用程序移动到运行nginx的服务器。 我已经configuration了数据库连接,而我的Laravel应用程序(主要是)用期望的页面进行响应。 但是,服务器没有快速响应并返回一个随机的时间 504 Gateway Time-out 一段时间后。 一个 service php5-fpm restart 或者稍后再尝试修复这个暂时的。 我在PHP 5.6(通过FPM),HHVM和MySQL使用nginx。 我不想增加最大的执行时间,因为脚本不应该花这么长的时间。 我怀疑这是在新的环境中的PHP脚本或configuration问题的问题。 这不应该是nginx本身的问题,因为静态资源发送正确。 我如何解决和解决这个问题?

php和mysqld进程运行数小时。 这是正常的吗?

我有一个Jenkins服务器,它定期重buildPHP / mySQL应用程序。 每次推送新的PHP代码时,这个作业将删除相应数据库中的所有表,然后使用PHP安装程序中指定的结构重新创build它们。 这大部分工作正常,虽然偶尔挂起。 我不知道如何mysqld / php进程实例化/销毁。 我注意到我经常有运行一个多小时的php进程,而且我至less有一个运行数小时/天的mysqld进程。 看看我的top输出: 每次请求页面时,你不应该得到一个新的进程吗? 这个过程是不是应该在页面交付后被销毁? 我以为PHP的工作方式,我不知道有关mysqld。 我在php.ini中有一行说max_execution_time = 30 ,所以我很困惑如何这个PHP过程可能会超过一个小时。

curl返回错误52或56与REST API调用跨越5分钟以上

所以我一直在想这个问题已经有一个星期了。 这里是跑下来: 我在PHP中使用CURL从API中提取数据。 随着对API调用的响应变得越来越大(一次超过15k条logging),我注意到任何需要5分钟或更长时间(几秒钟内)的API调用都无法在我的CentOS和Suse服务器上返回。 所以,我通过CURL从CLItesting了API调用,并得到了同样的问题。 奇怪的是,如果我通过OS X运行CURL命令,命令运行良好,并在大约7分钟后返回。 这里是通过CURL运行的命令(creds censored): curl -m 0 -k –trace-ascii trace.txt –trace-time -X GET -H "tenant-code: 1cmPx7tqVDVTdN1GSelwycFUmICmASnLCmNQsV72" -H "Authorization: Basic JxHAsXeUiHMRkS8Msiu6pWb3PvY20p6am3QvXCY3knXTAntlxTBS3EyEDgly" -H "Content-Type: application/json" -H "Cache-Control: no-cache" 'https://api.endpoint.com/API/v1/system/users/search?groupid=555' > dump.txt 这里是CURL为每个平台输出的版本: CentOS(这是我真的需要这个工作) – curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2 Protocols: tftp ftp telnet dict ldap ldaps http […]

SQL查询重载服务器

我有一个php文件,经常被调用外部应用程序的会话检查。 我不知道每秒钟有多less个电话,但我想可能是每秒钟拨打20-100个电话。 然而这个.php文件包含一个更新单行的SQL查询。 一旦我没有注意到这些行,整个数据库变慢了很多,最后我的论坛不再可用了。 我认为这是一个像服务器问题(例如许多IOPS?)。 不幸的是,我不知道如何find放缓的确切原因,也不知道如何确定我每秒获得的php文件的多less个电话。 这是非常简单的SQL查询(where子句只包含主键): UPDATE bot_sessions SET ip_address = :ip_address, renewal_count = renewal_count + 1 WHERE username = :username AND session_token = :session_token 所以有两个问题: 我怎样才能知道每隔一秒钟我的特定的php文件被调用? 我怎样才能find我的整个数据库一旦我使用此更新查询减慢的原因?

APC和OpCache可以在PHP5.4中共存

我们通常运行php 5.4.x,在CENTOS上为我们的生产站点启用APC。 我们有一个新的应用程序是segfaulting,开发团队认为这是因为我们有APC。 该应用程序是复杂的,真的需要一个操作码caching。 我们有很多现有的应用程序可以很好地使用APC作为操作码和其他caching需求,所以我们并不想要质量保证,所以我们只想在APC扩展中安装OpCache扩展,然后让应用程序启用或者禁用,因为他们会。 但是,我们不能在这种情况发生之前find任何迹象表明这种做法是行不通的,因为在我们搞乱厨师做出这个事情之前,我想深入了解一下。

在我的生产环境中安装和configurationnginx

我知道这里有一些愚蠢的,但我似乎无法解决这个在我的情况。 我正在安装和configurationnginx,为我的VPS提供一个有用的,更快的服务器。 我正在使用Putty命令提示符。 我正在尝试为这个项目创build自己的结构。 为什么nginx.conf语法不行? 为什么这个nginx.conftesting不成功是我无法理解的。 谁能提供一些反馈? 我得到这个错误: nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-enabled/default:18 nginx: configuration file /etc/nginx/nginx.conf test failed configuration细节如下: # You may add here your server { server_name 123.456.789.0; return 301 $scheme://example.com$request_uri; # } # statements for each of your virtual hosts to this file ### of Nginx configuration […]

为什么nginx别名在.php文件上返回404?

这个configuration工作: location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } 但是,这会在每个.php文件上返回404(而.css / .txt工作正常): location /pma { alias /usr/share/phpmyadmin; index index.php index.html index.htm; location ~ ^/pma/(.+\.php)$ { alias /usr/share/phpmyadmin/$1; […]

源代码指向不同的服务器上的PHP版本

我只是想知道是否可以用不同的PHP版本“编译”相同的PHP源代码。 比方说,服务器“A”与php 5.4托pipe的源代码,我可以testing相同的源代码,而无需托pipe在服务器“B”(PHP5.5),但只需将服务器的A源代码指向服务器B. 可能吗 ? 我知道我可以通过维护两个不同的PHP版本在同一台服务器上,但这是我不想要的。

MySQL以不知名的间隔持续崩溃

Version: '5.1.73' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution 160130 08:29:38 mysqld_safe Number of processes running now: 0 160130 08:29:38 mysqld_safe mysqld restarted 160130 8:29:39 InnoDB: Initializing buffer pool, size = 8.0M 160130 8:29:39 InnoDB: Completed initialization of buffer pool InnoDB: Error: pthread_create returned 11 160130 08:29:39 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 160130 18:21:35 […]

mysqldump(使用PHP的exec)不倾销文件,但没有错误

我不确定这是SO还是SF问题,但我认为这可能是最好的地方。 如果不是,我很抱歉! 我通过PHP的exec使用mysqldump,但似乎并没有工作。 我正在使用的代码是 <?php exec('mysqldump -u DB_USER -pDB_PASS DB_NAME > /tmp/test.sql'); ?> 当我运行这个脚本时,我在error_log上没有收到任何错误,但是我没有在/ tmp中获得一个转储。 我不确定是什么原因造成的。 我不知道它是否试图转储到/ tmp相对于PHP文件正在执行,这是我正在寻找的结果,或转储到其他地方的/ tmp? 还是我完全犯了另一个错误?