var_export 与 var_dump的不同
[ 2012-12-10 09:25:33 | 作者: admin ]
var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。 而这个变量就会取得和被var_export一样的类型的值。看下面一个简单的例子:
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'apple',
1 => 'banana',
...
阅读全文…
<?php
$arr = array ( 1 , 2 , array ( "apple" , "banana" , "orange" ));
var_export ( $arr );
?>
程序输出:$arr = array ( 1 , 2 , array ( "apple" , "banana" , "orange" ));
var_export ( $arr );
?>
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'apple',
1 => 'banana',
...
阅读全文…
关于PHP的header("P3P: CP=CURa……") 跨域cookie
[ 2012-12-06 15:15:44 | 作者: admin ]
对于IE来说(默认安全级别下),iframe、img、link等标签都是只发送session cookie(又叫 第一方cookie),拦截本地cookie发送(又叫第三方cookie)。当这些标签跨域引用一个页面,实际上是发起了一次GET请求。
如果这个跨域的请求,HTTP返回头中带有Set-Cookie , 那么这个cookie对浏览器来说,实际上是无效的。
看如下测试
假设有 www.a.com 与 www.b.com 两个域
在 www.b.com 上有一个页面,其中包含一个指向 www.a.com 的iframe
http://www.b.com/test.html 的内容为:
----------------------------------------------------------------------
<iframe width=300 ...
阅读全文…
如果这个跨域的请求,HTTP返回头中带有Set-Cookie , 那么这个cookie对浏览器来说,实际上是无效的。
看如下测试
假设有 www.a.com 与 www.b.com 两个域
在 www.b.com 上有一个页面,其中包含一个指向 www.a.com 的iframe
http://www.b.com/test.html 的内容为:
----------------------------------------------------------------------
<iframe width=300 ...
阅读全文…
phpwind8.7 突然发现Handler_read_rnd_next一天就跑了238G之巨
[ 2012-11-30 13:46:41 | 作者: admin ]
[color]im286: 排查之后认定受影响范围:除新装8.5之前升级上来的任何PW版本,有好奇心的可以去phpMyadmin查看一下自己MYSQL状态Handler_read_rnd_next部分,如果没人帮你排查过,你也中枪了……[/color]
故事背景:最近服务器老是不稳定,经查CPU有点离奇居高,以前平常也就10%以下,现在居然老会飙到20~40%不等,最主要的是Mysql占用的CPU线程一直高于40%~100%,虽然服务器是CPU*2 8核 内存8G还扛得住,但是总感觉论坛开始卡顿了,也没当回事,终于在前天mysql服务崩溃了,重启了之后开始关注这个问题,终于在phpMyadmin状态发现Handler_read_rnd_next一天不到就跑了 238G,之前没看这个数据,那不是n*T?!!!
不懂程序,不懂数据库,只好一边搜索一边排查,走了好多弯路:
1、优化my.cnf无效
...
阅读全文…
故事背景:最近服务器老是不稳定,经查CPU有点离奇居高,以前平常也就10%以下,现在居然老会飙到20~40%不等,最主要的是Mysql占用的CPU线程一直高于40%~100%,虽然服务器是CPU*2 8核 内存8G还扛得住,但是总感觉论坛开始卡顿了,也没当回事,终于在前天mysql服务崩溃了,重启了之后开始关注这个问题,终于在phpMyadmin状态发现Handler_read_rnd_next一天不到就跑了 238G,之前没看这个数据,那不是n*T?!!!
不懂程序,不懂数据库,只好一边搜索一边排查,走了好多弯路:
1、优化my.cnf无效
...
阅读全文…
PHP中strtr和str_replace比较
[ 2012-11-11 17:17:49 | 作者: admin ]
首先这2个函数都是具有替换字符功能的。但是strtr比str_replace性能上要块4倍。具体情况请看如下分解:
首先是strtr函数:
实例1:当被替换的值长度大于被替换目标的时候
实例2:当被替换的值长度小于被替换目标的时候
<?php
//这个时候输出的为laocai而不是lacai,因为str("pao")>strlen("la")
echo strtr("paocai!","pao","la");
?>
实例3:支持数组替换[code][/code]...
阅读全文…
首先是strtr函数:
实例1:当被替换的值长度大于被替换目标的时候
<?php
//这个时候输出的为baicai而不是bai123cai,因为str("pao")<strlen("bai123")
echo strtr("paocai!","pao","bai123");
?>
//这个时候输出的为baicai而不是bai123cai,因为str("pao")<strlen("bai123")
echo strtr("paocai!","pao","bai123");
?>
实例2:当被替换的值长度小于被替换目标的时候
<?php
//这个时候输出的为laocai而不是lacai,因为str("pao")>strlen("la")
echo strtr("paocai!","pao","la");
?>
实例3:支持数组替换[code][/code]...
阅读全文…
phpwind中pw_merge_posts建分表bug,造成个人空间主题回复数据不准确
[ 2012-11-01 20:03:54 | 作者: admin ]
p.s. 此bug存在于phpwind8.7正式版2011.11.11发布版本,目前(2012.11.1)下载版中还没有修复。
论坛一直有反馈说个人空间主题回复数不正确,每次重新分表之后能稍微消停下,稍微过点时间依旧出现强烈反馈
目前分表如下
pw_posts
pw_posts1
。。。
pw_posts9
对比发现 pw_posts9中的新数据,在合成表中pw_merge_posts不存在,也就是最后建立的表没有关联到pw_merge_posts,造成数据丢失。
导出pw_merge_posts结构,发现的确少了pw_posts9表,重建pw_merge_posts后问题解决
研究了下,发现/admin/bakup.php 中存在一个小问题
404行,新建回复分表时将最新回复表组合plist赋值给了tlist,造成更新Merge联合表的时候,少了最后建立的那个分表
阅读全文…
论坛一直有反馈说个人空间主题回复数不正确,每次重新分表之后能稍微消停下,稍微过点时间依旧出现强烈反馈
目前分表如下
pw_posts
pw_posts1
。。。
pw_posts9
对比发现 pw_posts9中的新数据,在合成表中pw_merge_posts不存在,也就是最后建立的表没有关联到pw_merge_posts,造成数据丢失。
导出pw_merge_posts结构,发现的确少了pw_posts9表,重建pw_merge_posts后问题解决
研究了下,发现/admin/bakup.php 中存在一个小问题
404行,新建回复分表时将最新回复表组合plist赋值给了tlist,造成更新Merge联合表的时候,少了最后建立的那个分表
$GLOBALS['db_tlist'] = $plist;
...阅读全文…
一个QQ登陆获取 access token 的问题
[ 2012-10-29 12:46:47 | 作者: admin ]
程序运行的结果是 access_token is empty
如果我将 token_url 直接在浏览器中输出 可以显示 access_token 为什么用 file_get_contents($token_url); 无法获取
阅读全文…
如果我将 token_url 直接在浏览器中输出 可以显示 access_token 为什么用 file_get_contents($token_url); 无法获取
$token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&"
. "client_id=" .$qq_appid. "&redirect_uri=" . urlencode($login_allback)
. "&client_secret=" .$qq_appkey. "&code=" . $_REQUEST["code"];
//$response = get_url_contents($token_url);
$response
.... "client_id=" .$qq_appid. "&redirect_uri=" . urlencode($login_allback)
. "&client_secret=" .$qq_appkey. "&code=" . $_REQUEST["code"];
//$response = get_url_contents($token_url);
$response
阅读全文…
PHP“内存位置访问无效”
[ 2012-09-22 09:05:26 | 作者: admin ]
新配置的PHP环境,或者刚做过配置改动,比如新加载的DLL扩展,访问页面,可能会出现“内存位置访问无效。”的错误。主要原因是DLL扩展加载失败。
我们就需要找到是哪一个DLL文件加载出现了问题。排查方法是:
将php.ini中 display_startup_errors = Off 改为display_startup_errors = On 。
这时访问php页面,服务器上会弹出php错误的提示对话框,你就可以明确看到是哪一个dll文件加载失败,有时会有多个dll文件加载失败,需要你先分号(;)注释掉php.ini中提示那个dll后继续访问如此反复排查。
把出问题的dll都用分号(;)注释掉后,php就可以正常运行了。
上面是网上搜的方法,原理是对的,但是具体到我遇到的问题,不用那么麻烦,把IIS先暂停下,结束w3wp.exe进程,删除原来加载中的dll,重新添加新的dll,然后重新启动IIS即可以.
我们就需要找到是哪一个DLL文件加载出现了问题。排查方法是:
将php.ini中 display_startup_errors = Off 改为display_startup_errors = On 。
这时访问php页面,服务器上会弹出php错误的提示对话框,你就可以明确看到是哪一个dll文件加载失败,有时会有多个dll文件加载失败,需要你先分号(;)注释掉php.ini中提示那个dll后继续访问如此反复排查。
把出问题的dll都用分号(;)注释掉后,php就可以正常运行了。
上面是网上搜的方法,原理是对的,但是具体到我遇到的问题,不用那么麻烦,把IIS先暂停下,结束w3wp.exe进程,删除原来加载中的dll,重新添加新的dll,然后重新启动IIS即可以.
php FastCGI ISAPI win2003 iis6 20090214更新(精典)
[ 2012-09-19 09:56:13 | 作者: admin ]
【准备工作】
下载相关软件
PHP 5.2.6 zip package
http://www.php.net/releases/
Zend Optimizer v3.3.3
http://downloads.phpchina.com/zend/optimizer/
eAccelerator 0953 for PHP 5.2.6
http://www.sitebuddy.com/PHP/Accelerators/eAccelerator_windows_binaries_builds
ISAPI_Rewrite3_0058_manual.exe 手工安装
http://www.helicontech.com/download-isapi_rewrite3.htm
mysql5.0.67 Without installer (unzip in C:\)
http://dev.mysql.com/downloads/mysql/5.0.html
...
阅读全文…
下载相关软件
PHP 5.2.6 zip package
http://www.php.net/releases/
Zend Optimizer v3.3.3
http://downloads.phpchina.com/zend/optimizer/
eAccelerator 0953 for PHP 5.2.6
http://www.sitebuddy.com/PHP/Accelerators/eAccelerator_windows_binaries_builds
ISAPI_Rewrite3_0058_manual.exe 手工安装
http://www.helicontech.com/download-isapi_rewrite3.htm
mysql5.0.67 Without installer (unzip in C:\)
http://dev.mysql.com/downloads/mysql/5.0.html
...
阅读全文…