Articles of PHP

NginX /清漆和自动caching

假设我们有一个WordPress站点example.com 在我们的网站上,有多种产品。 url看起来像这样: example.com/products/product-1/ example.com/products/product-2/ example.com/products/product-3/ etc… 为了举例,我们假设如下: 每个产品页面需要10秒钟才能生成。 无法提高硬件或软件性能,因此生成产品页面总是最less花费10秒。 产品页面上的信息每小时更换一次。 我们假设每个产品页面内容每小时改变一次,并保持不变,直到下一个小时。 我们不想触发最终用户的caching再生。 换句话说,如果一个小时过去了,caching无效,这个必须通过服务器上的一些进程,NginX,Varnish等进行检查和更新,而不是最终用户。 我们不想让约翰等10秒,他是一个不耐烦的人。 我们不想在应用程序级别执行任何caching,不会执行任何memcahed操作,也不会执行任何wp_cache插件。 它必须通过NginX或Varnish或类似的东西。 我可以caching这些页面,并且每隔一个小时只能由NginX重新加载它们吗? 我需要清漆吗? 我将如何设置,以便所有页面自动重新caching?

Apache2.4和HHVM作为FastCGI – 每个VHost有不同的设置?

我刚刚使用ProxyPassmatch指令设法在FastCGI模式下使用HHVM设置Apache 2.4服务器。 问题是,我现在可以为每个主机设置不同的根path,但不能为每个VHost设置任何其他configuration参数,如include_path,error_log或其他经典的PHP设置… VHost文件: <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName host1.local DocumentRoot /var/www/host1/root ErrorLog ${APACHE_LOG_DIR}/host1_error.log CustomLog ${APACHE_LOG_DIR}/host1_access.log combined ProxyPassMatch (.php)$ fcgi://127.0.0.1:9000/var/www/host1/root # php_value include_path ".:/var/www/host1/includes" # php_value error_log "/var/www/host1/log/php_error.log" <Directory /var/www/host1/root> AllowOverride All </Directory> </VirtualHost> 有一些报告说我也可以在HHVM中build立虚拟主机,但是由于Fast-CGI似乎被弃用了。 即使如此,除了我的Apache VHost文件之外,我还必须在单独的文件中提供VHost设置。 所以…我怎么能提供不同configuration的HHVM每VHost? 更新似乎我讨论了在回答中描述的使用FcgidInitialEnv(或Nginx上的fastcgi_param)方法时HHVM的错误(或丢失的function)。 https://github.com/facebook/hhvm/issues/3730

apache worker + php fastcgi,长脚本

我的问题是,长的PHP脚本(几个小时)正在退出提前。 (FireFox表示“加载页面时,服务器的连接重置”)。 有时在30分钟后退出,有时在1小时45分钟后退出。 CentOS 6.6 64bit Apache 2.2.9 MPM worker php 5.5.20 mod_fcgid 2.3.9 没有安装操作码caching cPanel和WHM 11.46 我有root权限 对于FastCGI,我通过WHM包含编辑器将以下内容包含到httpd.conf中以post_virtualhost: <IfModule mod_fcgid.c> FcgidBusyTimeout 86400 FcgidIOTimeout 86400 </IfModule> 之后,IfModule节我有<目录path/到/ mysite>部分(“<”之后没有空格)。 我在脚本中多次使用set_time_limit()和ignore_user_abort()来保持运行。 在Apache错误日志中没有任何东西。 phpinfo: http ://lot-art.com/info.php(你可以看到set_time_limit()和ignore_user_abort()的作品) 它在我的旧服务器上运行正常,运行mod_php: http : //216.119.148.91/info.php

crontab中的符号链接,找不到脚本

我正在运行Debiantesting,不能得到一个简单的cron来运行符号链接的PHP脚本。 我有一个PHP脚本在我的家庭文件夹/home/foobar/dir/script.php (从下面的shebang #!/usr/bin/env php )的子目录中。 我创build了一个指向它的符号链接: sudo ln -s ~/dir/script.php /usr/local/bin/whatever ls -la /usr/local/bin lrwxrwxrwx 1 root staff 24 Feb 27 17:46 whatever -> /home/foobar/dir/script.php* 并将以下规则添加到我的crontab(每分钟执行一次): crontab -e * * * * * whatever 但它不起作用 ,我得到以下错误: cat /var/mail/foobar … /bin/sh: 1: whatever: not found 指向脚本时不使用符号链接工作 : crontab -e * * * * * /home/foobar/dir/script.php […]

Apache不显示PHP错误的自定义500错误页面

Apache不想显示我设置的自定义错误文档。 在我的虚位上,我有 DocumentRoot /var/www/site/public … ErrorDocument 500 /500.html 500.html位于/var/www/site/public/500.html 为了testing这个,我刚刚创build了一个破损的PHP页面,它返回一个500头,但是页面是空白的。 我怀疑这是PHP生成500页而不是apache的结果。 那么如何让PHP显示我的自定义Apache的错误文档?

运行任何PHP时分段错误

更新:我通过运行apt-get upgrade解决了这个问题,它更新了许多php包,它必须是一个bug扩展,现在已经修复 当我login虚拟机并简单地键入时,我有stream浪的家园(Ubuntu 14.10) php -v 甚至 php 它说 Segmentation fault 我现在甚至没有试图运行一个脚本。 我试过重新启动虚拟机。 我怎样才能find问题? 更新:我可以通过浏览器加载php的罚款! 我似乎只是cli 更新2:Strace: http ://pastebin.com/txWwLf5k

Nginx 1.8configuration问题

问题在于:(我是NGinx的新手,请仔细阅读,但没有find我的工作解决scheme。) 我在Windows系统上。 我的项目文件系统位于: E:/www/ 这里是一个项目文件夹,我将尝试在本例中稍后介绍: E:/www/projectTest 我有一个Apache服务器运行良好。 我想build立一个Nginx服务器并行,这就是为什么我使用另一个端口configuration我的nginx(见下面的configuration文件)。 Nginx的文件在那里: E:/nginx/ 我在那里复制了一个PHP: E:/nginx/php/ 这里是我的例子'index.php'我放在我目前的文件夹来testing我的php和nginxconfiguration: <?php echo "THIS IS A TEST"; ?> 这里是我的nginx.conf文件(我删除了注释行): worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8111; server_name localhost; root E:/nginx/; index index.php index.html index.htm; charset utf-8; location / { […]

Laravel 5 CSRF在prod服务器上,而不是dev

我使用Laravel Homestead在本地进行开发,然后有一台远程服务器用于生产。 在我的本地副本,一切正常,没有问题。 在产品上,即使我在服务器上curl页面,我在任何尝试的路线上都会遇到令牌不匹配exception。 我一直在寻找两天,试图找出什么可能导致这一点,我已经绝对没有运气。 我认为这可能只是一个服务器configuration问题,但我不知道什么会阻止工作正常。 我只是无法弄清楚这一点。 /storage具有适当的权限(目前777),configuration文件具有唯一的会话variables,而我的.env目前使用会话驱动程序的'文件'。 尽pipe如此,这也发生在'数据库'作为驱动程序。 如果我做hhvm public/index.php或php public/index.php它按预期工作,没有CSRF问题。

PHP / FastCgi – 哪个是使用nginx而不是使用apache的阈值

我是一名PHP开发人员,我一直在开发LAMP环境,现在一切都很顺利。 目前,我正在开发一个PHP Web应用程序,仍然在Apache上,没有使用任何框架。 PHP-fpm将在前端提供dynamic和静态内容,而php-cli脚本将通过一些cron-jobs(实际应用程序)在后端运行。 这一次,我正面临着并发问题,因为这个网站将被多个用户使用。 并发login用户的估计数量为50-75,至less在启动期间。 我几乎在任何地方都看过Nginx比Apache更好, 我已经阅读了很多解释它们之间差异的文章,我已经阅读了性能统计数据,但是我没有find实际的(并发用户)阈值,您应该从Apache切换到Nginx。 我只是想知道这一点,正如我上面所说的,我一直在使用Apache,Web服务器的改变是一个重要的select,特别是关于我将不得不花费在Nginx文档上以便完全理解它的行为/function。 事实上,我试图build立一个LEMP服务器,但Nginx现在听起来像阿拉伯语。 在这个“简短”介绍之后,这里是我的问题: 什么是切换到Nginx的recjomended阈值(用户数)? 假设我的网站同时不会有超过300个在线用户,那么即使服务内容更快一点,我是否真的要花上几个星期去研究Nginx呢? Apache / PHP-fpm和Nginx / PHP-fpm之间在安全性方面存在重大差异吗? 最后但并非最不重要的是:我刚刚从OVH切换到Digital Ocean。 数字海洋似乎太棒了。 它们为您提供LEMP服务器的预build图像。 Digital Ocean的Nginx安全设置有多less? 我只是因为我search了很多Nginx的强化技巧,其中大部分是在构buildNginx 之前执行的。 使用Digital Ocean的LEMP服务器的人可以帮助我吗? 注:我想这个信息将是重要的,以回复:产品。 服务器(在启动时)将是:4c / 8t intel – 8GB内存 – SSD硬盘 非常感谢你。

阅读65k行挂起PHP / MySQL

我正在开发处理IP地址的PHP应用程序。 我正在使用包含多达40亿行的mysql表。 我有一个脚本,目前需要从该表中获取65536个地址,并且当我尝试提取这些65K行时,mysql < – > php界面无法通过PHP或甚至通过phpMyAdmin给出响应。 如果在命令行中使用,mysql将在0.2秒内给出65K的线路。 包含IP地址的表有3个索引(1个唯一的,2个主键),这些索引应该可以帮助我们更快地完成工作,但是我不能让mysql把一个关联数组返回给PHP,以便继续我的数据处理。 服务器是一个专用的最近Xeon机器,约32GB的内存(我不知道确切的规格)。 有什么线索可以在这里发生? 提前致谢。