![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
php
misaka去年夏天
让学习成为一种习惯
展开
-
预排序遍历树算法
预排序遍历树算法想用这个算法的原因起源于一个帖子:http://bbs.csdn.net/topics/392012391预排序遍历树算法(modified preorder tree traversal algorithm) 这种方法大家可能接触的比较少,初次使用也不像上面的方法(邻接表)容易理解,但是由于这种方法不使用递归查询算法,有更高的查询效率。转载 2016-09-04 14:02:21 · 8236 阅读 · 0 评论 -
PHP判断请求是否来自移动端还是PC端
如题,其实最简单的方法就是判断$_SERVER['HTTP_USER_AGENT']里是否含有关键字“mobile”(user_agent里面包含了用户的设备信息),下面是thinkphp论坛上的找到的更好的判断方法:function isMobile(){ // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTT原创 2016-08-12 17:15:40 · 6902 阅读 · 0 评论 -
PHPmailer发送邮件成功,对方收不到邮件
项目中使用PHPmailer,发送邮件到客户的邮件服务器,$mail对象返回发送结果为true,结果客户那边的邮箱总是收不到邮件。设置$mail->SMTPDebug = 2,把客户端和服务器端的错误都返回到echo出来,结果在chrome的network里,怎么看都没有发现任何错误的信息。试着把收件人的邮箱换为我自己的QQ邮箱,发现可以收到邮件。于是怀疑对方的邮件服务器过原创 2016-09-23 23:42:55 · 6238 阅读 · 0 评论 -
PHP使用gearman扩展完成异步任务总结
PHP的gearman扩展,可以在Linux服务器上,实现PHP脚本的异步任务,甚至是分布式异步任务。在项目中一些响应慢,或者是占用时间的PHP脚本,可以用异步任务去完成,用户访问时不用等待漫长的队列任务,因为在服务器上有专门跑这些异步任务的脚本。1、安装能执行任务的job(用于执行“work”)#wget http://launchpad.net/gearmand/tru原创 2016-09-24 00:26:03 · 2308 阅读 · 0 评论 -
Nginx解析PHP脚本的过程
之前项目中碰到了一些php-fpm的问题:因为网站的一些接口,在特定情况下响应特别慢(1-2分钟),迟迟不结束,导致php-fpm数量越来越多,最后到达127个后,服务器就没能响应正常请求了,浏览器一直打转,迟迟不响应。把接口修好后,php-fpm进程的数量就稳定了,问题得以解决。这让我对php-fpm这个进程产生了兴趣。在百度和google了不少文章后,我总结了一下关于CGI,fas原创 2016-09-24 17:47:43 · 3445 阅读 · 0 评论 -
phpstorm 配置 xdebug断点调试
前言 php是脚本型程序 每次出错都要手动exit断点程序不是很方便 哪里有需求哪里就有生产,Xdebug可以实现对php的断点调试。下面将我个人的安装经历分享给大家。 运行环境 windows 、lamp、phpstorm 、chrome (配置方法一样 Ubuntu也通用)一、首先安装xdebug 安装xdebug比较简单 ,运行php -i转载 2016-11-01 23:37:11 · 5498 阅读 · 0 评论 -
Lamp环境下:fopen failed to open stream:permission denied
一般来说,出现这种报错:fopen failed to open stream:permission denied......基本都是网站的目录权限的问题了,以防自己忘记,在此记录下:使用命令chmod -R 751 网站目录 #比如chmod -R 751 www.example.com即可。原创 2016-08-09 23:38:36 · 1006 阅读 · 0 评论 -
centOS上开启php的报错提示
lamp的开发环境配置好之后,把项目迁移到Linux上,配置好了虚拟主机后,通过浏览器访问网站,结果什么都没显示,打开network,看到HTTP 500错误。十分纳闷,各种排查Apache的域名设置,没有任何问题。最后看了Apache的error_log日志才看到是PDO扩展没开启,产生了一个fatal error。于是需要开启php.ini里的报错设置:#vim原创 2016-07-31 01:06:23 · 2614 阅读 · 0 评论 -
php移动文件或者递归移动文件夹
用php移动文件或者移动文件夹,可以用php的自带函数:rename函数。此处自己写了个函数实现rename函数的功能。代码和注释:<?phpheader('Content-type:text/html;charset=UTF-8');/** * 递归移动源目录(包括文件和子文件)到目的目录【或移动源文件到新文件】 * @param [string] $so原创 2015-11-03 23:02:34 · 2979 阅读 · 0 评论 -
在APP中两个业务都需要支付,但一个ping++应用只有一个webhook
ping++管理平台可以配置webhooks回调地址,该地址用于APP和ping++平台完成交易后,平台告诉服务器端支付的结果。从APP客户端发送给服务器端的数据,并不能完成信任,所以由平台与服务器端通信,保证了交易结果的安全性,因为webhook回调时还可以设置签名验证【可选】。虽然很安全,但是从平台管理webhooks的时候,如果一个应用配置了多个webho原创 2016-04-04 11:28:24 · 2741 阅读 · 0 评论 -
引入ping++的server SDK,thinkphp报错:unexpected 符号“,”
在thinkphp中,引入了ping++的server SDK,根据example的示例调试代码时,报了个扩展未开启的错误:开启openssl扩展(在ext目录下需要有个openssl扩展,并且在php.ini里把该扩展的注释去掉),重启服务器,问题就解决了。但在上传到服务器环境后,报错提示:unexpected符号“,”,在pingpp/lib/Util/RequestOptions原创 2016-04-04 11:06:37 · 1082 阅读 · 0 评论 -
虚拟机的centOS里可以访问PHP脚本,而windows下不能访问
在centOS上yum安装好lamp环境后,写了个index.php脚本,在centOS的火狐上可以访问,但在windows下通过Linux的IP来访问该文件,就访问不了。原因一般是Linux的防火墙和SElinux服务导致的,项目开发阶段可以关闭防火墙和SElinux服务,解决问题。1、 #iptables -F,清空防火墙规则。 命令chk原创 2016-07-27 23:51:42 · 1032 阅读 · 0 评论 -
centOS7中搭建Lamp环境(包括配置虚拟主机)
首先说明下,我在搭建的时候,用的是centOS7,虽然都是用命令行配置的,但是因为选择了GUI的centOS所以一些命令和库是系统装好的,纯命令行版本的centOS7,有些命令和库可能需要自己去安装。1、安装Apache和php#ifconfig 查看以太网口信息#ping www.baidu.com 确认网络状况良好#yum search httpd 从yum源搜原创 2016-08-26 15:31:59 · 6635 阅读 · 2 评论 -
php设计模式之策略模式
经常听学Java的同学说起设计模式,今天开始接触一些php的设计模式,觉得策略模式挺有意思。其实使用设计模式的目的,大多是为了提高某种类或功能的可扩展性:这里的可扩展性对于Java和C++等强类型语言是非常有用的,使用了合适的设计模式,你可以不修改原类的代码,而新增若干个类来完成扩展。如果你是php程序猿,你可能会说:这没什么啊,我在原类里新增一个方法来完成不就好了?是的,对于php来说,在源码做原创 2015-09-30 09:25:48 · 781 阅读 · 1 评论 -
用php实现分解质因数
算法一直是本人的弱项,最近在看C语言经典算法用php实现时,碰到一题:分解质因数。自己想不出怎么写,于是看了看作者怎么写的,怎么也看不懂,于是借鉴了思路,自己试着写了一个。思路:如果要计算$num的质数,则至少收集$num以内的质数数组,判断$num是否在质数数组里,如果否,则判断当前质数$zhishu[$i]是否能再次将整除后的数整除,如果能,则质数数组“游标”不移动(还让当前质数$zhis原创 2015-09-24 18:25:01 · 2114 阅读 · 0 评论 -
对于session和cookie的理解
【主要讲session和cookie在服务器端和客户端的工作方式,代码中有些方法使用的是thinkphp的方法】用户登录的时候,输入用户名和密码,并且勾选了“下次自动登录”(表单name为auto),那么服务器端收到了该表单中的auto字段,就会去生成给该用户的cookie。之后在服务器端生成一个$_SESSION['uid']用于保持该会话,之后就会跳转到登录后的页面--首页(把HTML发给客户原创 2015-08-13 21:52:38 · 1104 阅读 · 0 评论 -
win7 64位 安装memcache扩展的方法
第一步:安装准备:文件下载链接 ======》 http://www.zixue.it/thread-18806-1-1.html这几个文件中:memcached.exe,libgcc_s_sjlj-1.dll,pthreadGC2.dll是安装所用,而php_memcache.dll是安装所需的扩展(此处我发的是php5.4版本对应的扩展,如果你用的其他版本的php,那么可以去百度找下载原创 2015-09-05 16:24:25 · 1298 阅读 · 0 评论 -
简单的PHP异常处理
PHP提供了面向对象的异常处理方式。用throw抛出异常,try测试产生异常,catch捕捉异常。下面的代码演示了如何简单地抛出一个异常。//异常处理error_reporting(0); //让PHP不报错,方便观察异常class MySql{ private $conn = null; public function __construct(){原创 2015-10-19 15:27:49 · 1115 阅读 · 0 评论 -
用正则匹配出一段文章中的img标签
一些在线的文本编辑器比如ueditor等,编辑和发表的文章是带有html标签的。开发中有时候需要从一些网站抓取文章中的图片,需要用到正则。比如下面从一段文章里取出之中的img标签的src属性和图片的后缀类型:<?phpheader('Content-type:text/html;charset=UTF-8');$str = <<<HEREDOC美国NYMEX WTI原油1月期货周原创 2016-01-01 20:39:03 · 3860 阅读 · 0 评论 -
PHP去除字符串中的中文字符
如题,删除一段字符串的中的中文,只要正则替换中文字符为空字符即可:<?phpheader('Content-type:text/html;charset=utf-8');function p($arr){ echo ""; print_r($arr); echo "";}$a = "河蟹)(社会afeowa#$%^!@@#zf吃饭fawgwea汉堡包agho_iawgho原创 2016-06-20 13:58:53 · 6110 阅读 · 0 评论 -
Linux下强制卸载已安装的php!
原先在centOS6.6上已经安装好了Lamp环境,因为php5.3版本比较低,就使用了remi源升级到5.5,然后问题就来了:项目中使用的php-xml在centOS下找不到yum安装包,而且其他的扩展也找不到,没办法只好回退php版本。然而并没有给php“降级”的命令,所以需要卸载原先的php,重新安装php。 卸载php的命令,使用命令yum remove php是不够的,因为原创 2016-08-02 23:19:36 · 23728 阅读 · 3 评论 -
给Linux上安装php-mysqlnd扩展
在 centOS上安装了php-mysql扩展后,朋友说php-mysqlnd的扩展连接和操作数据库上更好,以下是mysqlnd的介绍:Mysql Native驱动(Mysql Native Driver 简称:mysqlnd )在PHP5.3.0版本中被引入。PHP5.4之后的版本mysqlnd被作为默认配置选项。 由zend 公司开发的MySQL数据库驱动,采用PHP开源协议(即原创 2016-07-31 18:37:36 · 18551 阅读 · 0 评论 -
PHP数组根据数组内的某个单元字段排序
如题,给出一个PHP数组,数组结构如下:$arr = array( array( 'name'=>'sadas', 'norder'=>1 ), array( 'name'=>'sadas', 'norder'=>11 ), array( 'name'=>'sadas', 'norder'=>123 ), array( 'name'=>'sad原创 2016-07-22 18:46:29 · 7400 阅读 · 0 评论 -
简单地使用nusoap调用webservice
使用php调用webservice,有个非常方便的封装类nusoap,可以在http://sourceforge.net/projects/nusoap/files/下载。NuSOAP中最常用到的类是soap_server和soapclient, 其中soap_server用于创建 Webservice服务,类soapclient则用于调用Webservice .这两个类的定义都在li原创 2016-06-26 10:16:57 · 2615 阅读 · 0 评论 -
LNMP环境下开启php的扩展
LNMP一键安装用着挺爽的,但开启PHP扩展有点费事,今天记录一下开启PHP扩展的过程,以免自己以后再开扩展又去百度一大圈。如果你想开启缓存加速类的扩展(比如memcache,redis等),请看这篇教程:http://lnmp.org/faq/addons.html如果是开启其他的扩展,这里以PHP的calendar扩展为例:(在Linux下使用php -m命原创 2016-04-23 10:44:12 · 5145 阅读 · 0 评论 -
php让浏览器下载txt等类型的文件
如果让浏览器访问一个txt文件,会发生什么呢?比如访问localhost/test/test.txt,chrome浏览器会直接把TXT文件的内容直接显示在浏览器上,而不是下载下来。但是也不是所有的文件都会被直接读取在浏览器上,像.zip、.doc等文件就会被直接下载,像.jpg,.png,.txt文件就会被直接读取。有时候,txt等文件比较大的时候,我们不希望浏览器直接原创 2016-04-04 11:46:15 · 2475 阅读 · 0 评论 -
多维数组json_encode之后产生对象而不是数组问题
json_encode函数可以对PHP的数组进行编码,返回值是json格式的字符串。对于多维数组进行json_encode,我一直以为是返回数组形式(形如{{obj1}, {obj2}, {obj3}}),但今天接口返回给客户端发现变成了对象而不是数组(形如[{....},{.....},{.....}]),不方便客户端操作,检查代码才发现,我之前一个unset操作把多维数组的第一个单原创 2016-03-18 22:33:11 · 10950 阅读 · 4 评论 -
PHP setcookie()之前不能有任何输出
PHP的setcookie函数,手册里是这么写的:setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a p原创 2016-11-24 17:05:27 · 4570 阅读 · 0 评论