php中使用内置的reset函数可以获取array的第一个元素的值。例如:
代码如下 | 复制代码 |
$arr = array('one', 'two', 'three'); echo reset($arr); |
// 输出的结果为 one对于下述代码,如果php开启了"Strict Standards",将会看到"Strict Standards: Only variables should be passed by reference in"的提示。
代码如下 | 复制代码 |
$str = 'netingcn.com'; echo reset(explode('.', $str)); |
为什么会这样呢?可以先看看reset函数的定义:
function reset (array &$array) {}从定义中可以看到,reset接受的参数是一个array的引用。而上述代码中explode返回值不是任何array的引用,所以在"Strict Standards"下会有上述提示。解决办法很简单,只需要把reset(explode('.', $str))分两步写即可。第一步先把explode的返回值赋给一个变量,第二步把这个变量作为reset参数。
出现上面的提示的不只是reset函数,只要参数接受的是对象引用,而传值直接使用function返回值都会看到那样的提示。例如内置的array_pop、shuffle、curent、next、prev、next等等
今天白天才架起PHPStorm+xdebug的调试环境,就遇到了各式各样的问题:访问超慢响应、访问超快响应但是是空白页。
问题A解决的方法很多,总归还有解决办法;问题B我估计是线程问题,也许可以通过调试php.ini的配置搞定,也许不是,很难讲清楚,线程的问题可能要跟xdebug的版本扯上关系。
解决方式
PHP.ini 找到memory_limit参数,增大!
换一个浏览器!我之前一直用Google Chrome调试程序,之后就开始变慢下来,直到每个页面变成6秒才加载完毕,已经忍无可忍。换成了Firefox、IE均没有这个问题。 (这个方法很好用,还能立刻见效!)
使用 xdebug.profiler_enable_trigger配置,有选择的运行xdebug功能探查程序。
xdebug.remote_host 的值最好跟你服务器的IP一致,比方说你是通过localhost访问,则这里写localhost,你是127.0.0.1访问,就写127.0.0.1
看看你的xdebug.profiler_output_dir目录是否已经达到几G了?(一套电商程序很可能在持续开发十几个小时后,xdebug.profiler_output_dir目录的xdebug文件达到好几G!)
平时不需要的时候,最好关闭xdebug!
xdebug.remote_enable = 0
xdebug.profiler_enable = 0
xdebug.remote_autostart = false
最后,一句话:DON’T RUN XDEBUG ON PRODUCTION.
php 中使用memcached扩展来访问memcached时,当memcached服务器无法正常连接,在默认设置下会造成请求响应变慢。注意:无法正常连接指网络故障,如两台服务器无法进行通信等,只要能ping通,就算memcached服务没有开启或down掉,不会影响响应时间,只是memcached没有启作用。
设置timeout时间通过常量Memcached::OPT_CONNECT_TIMEOUT来控制,默认是4000毫秒(php 官网显示1000,我测试版本1.0.2和2.0.1都是4000)。另外1.0.2和2.0.1还有很大差别。1.0.2在执行addServer时就会连接memcached服务器,而且执行命令时候需要2倍的timeout时间,所有当memcached无法连接时候,花费时间是3倍的timeout时间。
2.0.1在php 5.2中似乎有bug,无法使用,具体参看:https://bugs.php.net/bug.php?id=61283。
本文章来给各位同学介绍Windows 平台的 PHP 报错 Fatal error: Class \'COM\' not found in 的解决方法,有需要了解的朋友可参考。
然在 Win Server 08 往上搭载的 IIS 跑 php 性能提升不少,但还是觉得不太舒服。。。
某日在调试一个win上的php生产环境时,一段php代码返回了错误:
Fatal error: Class 'COM' not found in XXXXXXXXX
1 Fatal error: Class 'COM' not found in XXXXXXXXX
没发现 COM 类,php代码主要是调用一些系统的信息,初想应该是php没配置好,在stackoverflow找到答案,是讨论xampp的,要延伸开来,我加了几个要点:
★ php 根目录的 ext 文件夹下确保存有 php_com_dotnet.dll 这个文件
★ php.ini 确保有此语句
[PHP_COM_DOTNET]
extension=php_com_dotnet.dll
1
2 [PHP_COM_DOTNET]extension=php_com_dotnet.dll
★ 开始 > 运行 > services.msc 回车 > 确保 COM+ Event System 的服务开启
在 PHP 5.4.5 版本之前是内置的,但往后版本中分离了。。。
今天在使用phpwind9.0时发现安装它时居然需要安装pdo_mysql这个组件了,这个个人认为是一个脑残的做法,现在有多少站长是空间怎么可能权限来修改php.ini配置呢,为phpwind团队做出这样的做法感觉无奈下面我来介绍一些办法,这些都是有服务器操作权限的朋友可参考下面办法。
常见错误:
1.pdo_mysql未安装
解决方法:
修改本地php.ini配置,以Win下的php为例,
找到
代码如下 | 复制代码 |
;extension=php_pdo_mysql.dll 修改成 ;extension=php_pdo_mysql.dll |
去除前面的分号“;”。重启apache服务即可。
linux服务器处理办法
lanmp可以试着改一下php.ini
代码如下 | 复制代码 |
extension_dir = /www/wdlinux/apache_php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613/ |
测试后发现无效!
开始重新pdo_mysql的安装,需要用Xshell一类的软件登陆服务器进行设置
步骤:
1. cd lanmp //移动到安装包目录下
2. tar zxvf PDO_MYSQL-1.0.2.tgz //解压安装包
3. cd PDO_MYSQL-1.0.2 //进入解压后安装目录
4. /www/wdlinux/php/bin/phpize //查询环境版本
5. ./configure –with-php-config=/www/wdlinux/php/bin/php-config –with-pdo-mysql=/www/wdlinux/mysql //编译前测试配置
6. make //编译安装包
7. make install //安装
安装后重启:service httpd restart 和 service nginxd restart
然后再次安装phpwind9.0即可解决问题!
此方法可以解决:wdcp环境VPS,阿里云服务器的配置中出现pdo_mysql未安装和数据库连接失败could not find driver的问题!