存档

‘php学习’ 分类的存档

php-fpm模式下间歇性无法获取不到$_SERVER或者$_REQUEST数据

2018年7月3日 没有评论

最近安装了一台新的服务器,nginx+php-fpm模式

使用过程中发现$_SERVER或者$_REQUEST(不排除$_POST或者$_GET)间歇性无法获取数据

但是只要重启php-fpm服务就可以解决,但是运行一段时间之后又会反复出现

由此分析应该为php-fpm问题(重启可以解决,个人推测为php-fpm进程问题),一开始以为是当前版本php的bug,后来降低php版本后依然存在,找了很多google资料,都没有遇到类似问题。

花了2天左右时间,对服务器软件配置文件参数逐一排查调试,都没有找到问题所在。

最后,只能从拓展插件上着手,暂时锁定了问题所在:

xcache拓展和opcache拓展建议只开启一个,似乎discuz里面用的是xcache,所以建议只安装xcache
在php-fpm模式下,如果同时安装xcache和opcache,会导致莫名其妙的$_SERVER或者$_REQUEST无法获取数据(间歇性)

所以个人推测:2个都用的话(双层cache)会导致php-fpm的部分进程假死,前段请求发送到假死的进程上后,则无法返回数据,当发送到没假死的进程就可以返回数据(当重启php-fpm服务又正常了)

关闭opcache拓展后,目前运行了近1.5天,已经没有发现此问题。

php循环输出$_POST和$_GET数据

2018年6月4日 没有评论

以下代码可以实现php循环输出$_POST和$_GET数据

<?php
if($_POST){
foreach($_POST as $key =>$value){
$val .= ‘post:’.$key.”:”.$value.”\r\n”;
}
if($val){
$myfile = fopen(‘post.’.date(‘Y-m-d-H-i-s’).”.txt”, “w”) or die(“Unable to open file!”);
fwrite($myfile, $val);
fclose($myfile);
echo ‘post接收成功…’;
}
else {
echo ‘post接收失败…’;
}
}

if($_GET){
foreach($_GET as $key =>$value){
$val .= ‘get:’.$key.”:”.$value.”\r\n”;
}
if($val){
$myfile = fopen(‘get’.date(‘Y-m-d-H-i-s’).”.txt”, “w”) or die(“Unable to open file!”);
fwrite($myfile, $val);
fclose($myfile);
echo ‘get接收成功…’;
}
else {
echo ‘get接收失败…’;
}
}
?>

分类: php学习 标签: , ,

php新建随机图片或者文件保存文件名,可以防止不重复。

2017年9月26日 没有评论

php新建随机图片或者文件保存文件名,可以防止不重复。请使用以下函数。如果需要可以稍作修改。

function randPicName(){
$time=explode(‘ ‘,microtime());
return $time[1].sprintf(‘%06u’,substr($time[0],2,6)).mt_rand(100000,999999).substr(‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’,(mt_rand(0,61)),1).substr(‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’,(mt_rand(0,61)),1);
}

分类: php学习 标签: , ,

php递归创建不存在的目录

2017年9月26日 没有评论

使用下面的函数,可以实现php递归创建不存在的目录

function autoCreateDir($dir){
return is_dir($dir) or autoCreateDir(dirname($dir)) and mkdir($dir,0777);
}

分类: php学习 标签: , ,

随便弄的一个php采集程序

2017年6月16日 没有评论

随便弄的一个php采集程序,代码仅供参考。

<?php
set_time_limit(0);
header(‘content-type:text/plain; charset=utf-8’);
function request_post($postUrl,$param = ”) {
$curlPost=$param;
$ch=curl_init();//初始化curl
curl_setopt($ch,CURLOPT_URL,$postUrl);//抓取指定网页
curl_setopt($ch,CURLOPT_HEADER,0);//设置header
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//要求结果为字符串且输出到屏幕上
curl_setopt($ch,CURLOPT_POST,1);//post提交方式
curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);
$data=curl_exec($ch);//运行curl
curl_close($ch);
return $data;
}
function str_split_unicode($str,$l=0){
if($l>0){
$ret=array();
$len=mb_strlen($str,”UTF-8″);
for($i=0;$i<$len;$i+=$l){
$ret[]=mb_substr($str,$i,$l,”UTF-8″);
}
return $ret;
}
return preg_split(“//u”,$str,-1,PREG_SPLIT_NO_EMPTY);
}
require_once ‘zidian.php’;
$zidian_arr=str_split_unicode($zidian);
foreach($zidian_arr as $v){
$res=request_post(‘xs=%E5%BC%A0&mz=’.urlencode($v.’妤’).’&btnAdd=%E7%AB%8B%E5%88%BB%E6%B5%8B%E7%AE%97′);
preg_match_all(“/<font color=ff0000 size=5>([^\”]*)<\/font><\/b>分/is”,$res,$defen);
$fen=$defen[1][0];
if($fen>=90){
echo $v.’:’.$fen.'<br />’;
}
//sleep(2);
}
?>

分类: php学习 标签: ,
css.php