
php
莫冲
TO Be SIMPLE & STUDPID
展开
-
解决 ThinkPHP URL 中文乱码问题
参考:http://www.thinkphp.cn/code/121.htmlhttp://www.glmynet.com/index.php/blog/39用URL提交请求有中文时,无法插入到数据库中(数据库是utf-8)。可通过iconv来转换中文编码为utf-8再插入。[code="java"]if (!mb_check_encoding($_REQUEST[...原创 2013-07-15 10:50:58 · 473 阅读 · 0 评论 -
TP升级到3.2.3的注意事项
从TP3.2.2升级到3.2.3有以下几点需要注意1 TP3.2.3的DB FIELD默认小写,如果DB有大小写混合的设计,需要在config.php添加以下设置'DB_PARAMS' => array(\PDO::ATTR_CASE => \PDO::CASE_NATURAL),2 'URL_CASE_INSENSITIVE' =>true時,APP_DEBUG=tr...原创 2015-02-16 10:14:22 · 205 阅读 · 0 评论 -
PDF转JPG的工具
介绍个在线PDF处理工具http://smallpdf.com/cn/pdf-to-jpg瑞士开发的。PDF转JPG的质量非常高。imagemagick之类的根本没法比。介绍:http://www.aspirantzhang.com/network/smallpdf.html它用的转换工具转JPG的libraryshttp://www.pdf-tools.com...原创 2015-03-10 11:33:48 · 152 阅读 · 0 评论 -
imagemagick png 转 jpg 透明背景变黑
这个问题该如何解决呢?转换成JPG之前移除ALPHA通道?原创 2013-10-24 14:19:31 · 1088 阅读 · 0 评论 -
一个PHP生成短网址函数
短网址相比大家都不陌生吧,特别是微博上的应用更是把它带火了,其实要实现这个功能也很简单。[code="java"][/code]以上结果输出:网址:www.qttc.net短网址:SwOOy3可以把短网址存入数据库,做一个映射关系。再配合nginx重写规则就可以实现短网址生成,还原,跳转功能了。...原创 2015-04-14 18:05:22 · 233 阅读 · 0 评论 -
【转】细说PHP中strlen和mb_strlen的区别
在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载!在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。下面通过例子,讲解这两者之间的区...原创 2015-05-20 09:55:45 · 110 阅读 · 0 评论 -
TP的module支持中文
為了讓URL支持中文,例如www.xxx.com/廣州/xx 需要在emptyAction中處理捕獲到的廣州/xxxx。但是TP默認的module名稱是不支持中文的。因此需要修改TP框架的PHP核心文件:App.class.php修改後的代碼:[code="java"]/** * 执行应用程序 * @access public * @return...原创 2015-05-20 14:06:07 · 251 阅读 · 0 评论 -
thinkphp socket to support sso (php socket 不稳定,不建议使用)
cli code[code="java"]#!/bin/bashfilepath=$(cd "$(dirname "$0")"; pwd)cd $filepath#running status:sso.lock,stop status:ssostop.lockTMPFILE=$filepath/sso.lockSTOPFILE=$filepath/ssostop.l...原创 2015-08-18 14:06:37 · 149 阅读 · 0 评论 -
yaf 添加phpunittest
首先要讓php在cli下支持yafwamp下打開D:/wamp/bin/php/php5.5.12/php.ini在extension=php_xsl.dll下面輸入extension=php_yaf.dllyaf.environ=dev;yaf.use_namespace=0然後重啟apache。在項目目錄下新建一個test的入口文件,/public/inde...原创 2015-08-21 11:16:46 · 166 阅读 · 0 评论 -
yaf namespace的使用
yaf支持namespace。在php.ini 中添加yaf.namespace=1 就可以启动namespace但是如果开了namespace就不能再使用非namespace的写法了。[code="java"][/code]原创 2015-08-27 11:32:44 · 844 阅读 · 0 评论 -
phpunit使用說明
1 使用autoload.php默認加載src[code="java"]phpunit --bootstrap src/autoload.php tests[/code]會將tests目錄下所有xxxTest.php的測試代碼都遍歷執行。也可指定執行某個Test.php文件。[code="java"]phpunit --bootstrap src/autoload.php te...原创 2015-01-21 18:33:39 · 92 阅读 · 0 评论 -
TP3.1以上版本field的內容不要加空格,否则会被过滤
3.1以上版本支持field("a,b,c",true)的写法,这样查询出的field就会过滤掉a,b,c这三个字段。但是如果写成field("a, b, c", true)则只会过滤掉a则会把b,c显示出来。因为多了空格错误写法:[code="java"]$this->field("id,issueID,landscapeCoverID, portraitCoverID,bookIn...原创 2015-01-20 10:11:31 · 148 阅读 · 0 评论 -
TP3.2的URL忽略大小写配置导致找不到模板
我在TP中开启了'URL_CASE_INSENSITIVE' => true, //默认false 表示URL区分大小写 true则表示不区分大小写结果导致页面找不到模板,原因就是因为这个配置忽略了大小写,TP去找对应的模板时是用全部小写,忽略了大小写。因此找不到有大小写的Action对应的模板。在APP_DEBUG=true时是没问题的,在APP_DEBUG=false时才会出现...原创 2015-01-08 09:51:32 · 401 阅读 · 0 评论 -
PHP常用函数收集
1、出生日期转换成年龄[code="java"]private function changeBirthdayToAge($birthday){ $interval = date(time() - strtotime($birthday)); return intval($interval / (365 * 60 * 60 * 24 )) + 1;}[/code]...原创 2013-07-23 15:04:08 · 63 阅读 · 0 评论 -
php服务器发送邮件失败
在thinkphp上用phpmailer发送邮件。自己window上的wamp发送正常,邮箱是163的。但是发布到服务器上就一直提示发送失败。1、如何调试邮件发送错误信息?$result = $this->mail->Send(); //错误信息存储在下面这句 Log::write($this->mail->ErrorInfo); return $result;打出的...原创 2013-02-23 22:00:47 · 317 阅读 · 0 评论 -
apns 推送消息设置说明
使用apns php做ios消息推送服务端。有一些属性设置说明setBadge: 冒泡的消息数量(在icon右上角的数字)setSound:若无参数表示用默认声音,若参数为"none",则不播放声音setText:消息内容setContentAvailable:是否可在app中执行自动下载setCustomProperty:自定义属性setExpiry:超时时间,默认30秒...原创 2014-01-13 11:14:56 · 324 阅读 · 0 评论 -
如何判断memcached的是故障还是未设置key
在实现业务时,很多情况通常使用memcached,用以减轻DB压力.但我们get数据时,有时会返回false.返回false的情况有很多种.对于业务来说,需要区别两种状态.1.正常的,当前key我并未设置,或者已经过期.2.不正常.服务问题(如,服务器挂掉, timeout,and so on.) 对于第一种情况,业务通常在重新设置key.对于第二两情况,至少应该报警,抛异常等等.其实对于...原创 2014-01-14 16:33:51 · 133 阅读 · 0 评论 -
由于使用了web url路径压缩图片导致错误
昨天遇到一个问题,压缩图片报错。在测试环境没问题,在正式环境有问题。首先检查是否权限问题,排除权限问题。其次,检查路径问题,发现在测试服务器的压缩图片源路径是http开头的网络路径,目标路径是相对路径。那在正式服务器是否可以操作网络路径的文件呢?是不行的。因为测试环境和正式环境的配置不同。最后解决办法:将网络路径转换成相对路径。...原创 2013-08-16 09:47:06 · 170 阅读 · 0 评论 -
unserialize返回false的原因解析
今天define了一个序列化的数组,使用时需要unserialize回来使用。但是返回的是false。首先上网查了下,可能是由于define的php文件是anci编码,而unserialize文件是utf-8编码。于是我将define文件编码更改成utf-8后保存。但是保存后每次重新打开后又变成anci编码。怎么办呢?于是,我写了行中文的注释在define的php文件中。再保存就能...原创 2014-01-26 14:39:46 · 274 阅读 · 0 评论 -
php curl获取https地址的设置
本来用http的url获取资源,若是换成https,则获取失败。code返回0原来应该加上以下两个验证配置curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);参考资料:http://www.justwinit.cn/post/2653/...原创 2014-02-21 14:26:42 · 117 阅读 · 0 评论 -
刪除等重要操作之前必须严谨确认后再执行
在执行一个批处理删除失效文件的任务中,没有确认文件是否真的已经是失效状态,吓了一身汗。幸好代码逻辑没问题,不过这种感觉真的很不好。对于任何慎重操作,例如删除目录必须验证下删除的路径是否存在,是否预期要删除的文件。要删除log,必须确认log的status是否是失效状态。以及所有敏感数据,都一定要慎重再慎重。数据才是软件应用的核心内容!...原创 2014-12-25 09:47:38 · 131 阅读 · 0 评论 -
PHP/TP一些避免使用的用法
1 避免一個預定義變量賦給多處。如果是string類型,會過濾掉所有錯誤的過濾條件。見以下代碼的輸出[code="java"]public function testSql() { $fileID = array("dbc", null); $loginID = ""; $result = M("user")->where("userID='%s' or emai...原创 2015-01-04 17:54:50 · 87 阅读 · 0 评论 -
varnish的使用和PHP清除缓存的技巧
官網地址https://www.varnish-cache.org安裝路徑On Debian/Ubuntu this is /etc/default/varnish設置Backend servers/etc/varnish/default.vclvcl 4.0;import directors;# Default backend definition...原创 2016-08-11 14:10:05 · 328 阅读 · 0 评论 -
node.js获取php curl post数据req.body为空的处理
node使用了express4和body-parser来解析php curl的数据,但是获取的req.body是{},设置了header前提知识:body-parser不支持解析multi/form-data的功能,如果是传递二进制数据或者文件上传,就不能用它了。Node.js body parsing middleware.This does not handle...原创 2015-09-22 11:43:22 · 766 阅读 · 0 评论 -
文件格式不是unix导致sed,cat等读取文件后无法正常退出
[code="java"]#!/bin/bashbucket_config="sync_log.log"bucket_name=$(sed -n '1p' ${bucket_config})echo "s3://${bucket_name}/xxxxx"exit[/code]读取一个文件的第一行,然后跟其他字符串拼接,由于sync_log.log这个文件的格式不是unix(...原创 2016-08-30 14:44:30 · 273 阅读 · 0 评论 -
SAE操作记录
1 开发者用户只能创建myisam存储引擎的DB。企业用户才能创建INNODB。2 MEMCACHE一定要初始化才能用MYSQL。每日收费的3 每个app最多只能创建10个svn分支4 storage每个最多只能创建10个domain 单App创建domain数量...原创 2014-11-12 18:05:46 · 171 阅读 · 0 评论 -
一个session失效的伪命题
最近遇到一个问题,一个ajax请求会调用已存在的session,再依据session做一些处理。发现session有时候有生效有时候没生效。session是保存到db的,所以不存在访问不同服务器导致session不一致的问题。页面使用了varnish,一开始以为是varnish 缓存了页面,导致请求没有执行到php,而是使用了http缓存。后来清除了varnish,依然有这个问题。...2016-12-08 18:33:30 · 95 阅读 · 0 评论 -
php从mysql读取超过200W行的表
需要从一个大表,如user表中读取所有user数据再做整理并導出csv。如果使用框架會報內存不足,因為很多php框架會將數據庫數據放入臨時變量。PHP Fatal error: Allowed memory size of xxxxxx bytes .....解决办法:1 可以用mysql_unbuffered_query 这个api不使用客户端缓存,这样就不存在php内存分...原创 2017-01-04 10:09:33 · 169 阅读 · 0 评论 -
TP的sessionDB 扩展驱动
tp提供了sessionDB的扩展驱动。发现以下问题1 读取session会调用sessionDB的write方法读取$_SESSION['abc']首先会调用ThinkPHP\Common\functions.php 的session函数,传递name是空数组,value是""的参数。因此会执行sessionDB中的write方法。例如以下代码[code="jav...原创 2014-12-08 10:39:16 · 163 阅读 · 0 评论 -
linux獲取當前目錄的文件夾數量
[code="java"][/code]查看某文件夹下文件的个数ls -l |grep "^-"|wc -l或find ./company -type f | wc -l查看某文件夹下文件的个数,包括子文件夹里的。ls -lR|grep "^-"|wc -l查看某文件夹下文件夹的个数,包括子文件夹里的。ls -lR|grep ...原创 2014-12-12 15:45:37 · 87 阅读 · 0 评论 -
facebook graph api从2.6转到2.8的问题处理
之前一直用facebook 2.6的api,现在想升级到2.8.但是2.8的api做了一些调整。有些api的参数已经不一样了。各个版本的api的停用时间表见:https://developers.facebook.com/docs/apps/changelog版本 路径 推出日期 停用日期v2.8/v2.8/{object}2016 年 10 月 5 日至少到 ...原创 2017-02-15 16:30:28 · 263 阅读 · 0 评论 -
导出csv,excel等文件,文件内容错误的问题,需要加上ob_end_clean
见这个问题:http://stackoverflow.com/questions/14252465/phpexcel-file-cannot-open-file-because-the-file-format-or-file-extension-is-not代码都正常,但是没有ob_end_clean();导致输出的内容有误下面3个函数的用法ob_get_content...原创 2017-03-02 11:54:22 · 449 阅读 · 0 评论 -
TP在APP_DEBUG=false的情況下,CLI和WEBSITE會共用同一個~runtime.php導致出錯的問題解決辦法...
TP若使用了[code="java"]define('APP_DEBUG',false);[/code]會生成./Runtime/~runtime.php 緩存文件,以後每次調用都會用這個文件來處理但是若一個項目又使用了CLI,CLI生成的./Runtime/~runtime.php 文件跟website是同一個文件,而且cli生成的./Runtime/~runtime.php文件...2015-12-14 11:43:16 · 155 阅读 · 0 评论 -
tp5与tp3的区别
TP5作了很大的改变,更加灵活,没那么臃肿了,加入了一些令人振奋的功能,例如php7,unittest等,但是很多TP3下养成的习惯,在tp5可能要改改了。1 路由的变化tp3中定义路由[code="java"]'URL_ROUTE_RULES' => array( //定义路由规则 '/^password(\/)*$/' => '/Admi...原创 2016-11-21 14:33:30 · 287 阅读 · 0 评论 -
推送消息能不能区分禁止通知和卸载两种类型?
消息推送ios用了apns,android用的是gcm。推送失败都会返回无效的token,但是无效的tokne中,能不能区分到哪些是禁止通知,哪些是卸载app导致的呢?1 APNS PHP 的推送返回错误处理Push.php[code="java"]if (!empty($aMessage['ERRORS'])) { foreach($aMessage['ERROR...原创 2016-11-18 10:54:40 · 305 阅读 · 0 评论 -
Paypal支付跳转失败的原因及解决办法
遇到在跳转到paypal支付页面的时候出现502 bad gateway的错误,跳转的URL是https://www.paypal.com/cgi-bin/webscr?locale.x=zh_HK换了个paypal button id就可以,或者随便填个不存在的buttion id,也行。所以初步怀疑是paypal button的问题。登录paypal.com进入查看Tools->A...原创 2016-09-18 14:27:41 · 8319 阅读 · 0 评论 -
在线自动协同编辑文本的实现方案
要实现可以自动在线协同编辑文本的功能。就类似google docs差不多。可以不实时,允许一定时间内的延迟。当然,延迟也是比较难处理的,比如2个用户A和B,原始文本是abc,A删除了c,B由于延迟没看到,他删除了b。那么A看到的是ab,B看到的是ac,过了延迟时间后,AB看到的内容是一样的,都是a。延迟会导致他们的编辑产生误操作。一个比较简单的实现是加锁,当A用户编辑时,B用户不允许编辑。...原创 2016-10-14 16:49:19 · 2092 阅读 · 0 评论 -
YAF访问图片等静态资源禁止调用YAF框架的解决办法
当访问yafpublic 目录下的某个静态资源时,依然会访问yaf application框架,会调用到默认Controller的errorAction。获取到的url路径是http://xxx/favicon.ico这是因为浏览器默认会访问favicon.ico资源,而这个资源如果不存在的话就会执行yaf。解决办法:放入一张favicon.ico图片。...原创 2016-10-20 17:55:03 · 260 阅读 · 0 评论 -
推送emoji表情乱码的解决方法
推送内容如果包含了emoji表情,需要做以下修改1 mysql 要用5.5.3以上版本(如果不能升级,请用base64保存,推送时再转码)2 将表和推送内容表字段修改成utf8mb4_unicode_ci编码格式(不需要改系统的my.cnf,也不需要重启mysql)如果用了apnsphp来推送,可能依然会出现发送emoji表情变成?的问题:请找到Message.php的getP...原创 2016-11-04 17:44:11 · 966 阅读 · 0 评论 -
PHPExcel导出大量数据超时及内存错误解决方法
PHP导出excel相对很多童鞋都碰到了,使用phpexcel类也确实方便,但导出大数据的时候就没那么简单了,常常会伴随一些超时或内存溢出的问题,下面就给大家介绍一些方法,共同学习,共同进步。。。PHPExcel是一个很强大的处理Excel的PHP开源类,但是很大的一个问题就是它占用内存太大,从1.7.3开始,它支持设置cell的缓存方式,但是推荐使用目前稳定的版本1.7.6,因为之前的版...原创 2014-10-30 12:15:01 · 1749 阅读 · 0 评论