PHP学习
文章平均质量分 68
始终不够
现在的你, 凭什么翘着二郎腿, 你应该放下你的腿, 身体前倾, 时刻保持战斗姿态
展开
-
使用无限生命期Session的方法
作者:y10k 发布时间:2005-03-11 来源:PHPuser.com 本文不敢说非常好,但是笔者相信大多数PHPer都曾经想过这些问题。 <br /><br />使用无限生命期Session的方法 <br />在PHP4.0中加入了对Session的支持,方便了我们很多程序,比如购物车等等! <br />在很多论坛中,Session也用于处理用户的登陆,记录下用户名和密码,使得用户不必每次都输入自己的用户名和密码!但是一般的Session的生命期有限,如果用户关闭了浏览器,就不能保存Sessio转载 2011-01-12 09:25:00 · 548 阅读 · 0 评论 -
基于PCNTL的PHP并发编程
本文主要讲解基于PCNTL的PHP并发编程,虽然PHP本身不支持多进程,但基于LINUX的PHP扩展PCNTL却可以提供多进程编程。网络上很多同类文章,但笔者进行多次尝试后发现,不是难以控制进程数量,就是有潜在产生僵尸进程或孤儿进程的危险,或者父进程阻塞难以获得更大的并发效果,且大多没有介绍FORK的原理,使得PHP程序员学习PCNTL并发编程尤为困难。本文力求解决这个问题。原创 2014-01-14 23:26:01 · 19146 阅读 · 5 评论 -
初识Redis——邂逅
最近由于一块业务系统瓶颈的原因,需要找一个能够实现数据快速汇总的工具做一个中间缓存。具体场景是这样的:服务器收集WEB机群的日志集中处理,日志中有大量重复信息,需要汇总做COUNT次数统计。最开始用的MYSQL,后来发现写入瓶颈,造成数据库写入线程阻塞,日志处理线程只能等到不然会把放在内存里的数据库写入队列塞满。后来按业务做了分表,数据库写入和日志处理都改成了多线程。仍然不能解决问题,服务器负载也原创 2014-03-10 21:36:34 · 3707 阅读 · 2 评论 -
PHP实现程序单例运行
PHP实现程序单例运行原创 2014-08-15 00:00:43 · 2259 阅读 · 0 评论 -
基于System V Message queue的PHP消息队列封装
System V Message queue 是一种进程通信(IPC)的方式,方便实现生产者-消费者模型,单个或多个生产者向队列中写入消息,多个生产者再从队列中获取消息进行处理。项目地址:https://github.com/huyanping/Zebra-PHP-Framework该Wrapper支持:进程通信设置最大队列容量(字节单位)获取当前队列数量修改队列部分属性原创 2014-08-22 16:30:07 · 9626 阅读 · 0 评论 -
基于Redis的MessageQueue队列封装
Redis的链表List可以用来做链表,高并发的特性非常适合做分布式的并行消息传递。项目地址:https://github.com/huyanping/Zebra-PHP-Framework原创 2014-09-16 22:34:33 · 23567 阅读 · 2 评论 -
翻译:Laravel-4-Generators 使用自定义代码生成工具快速进行Laravel开发
使用自定义代码生成工具快速进行Laravel开发这个Laravle包提供了一种代码生成器,使得你可以加速你的开发进程,这些生成器包括:generate:model – 模型生成器generate:view – 视图生成器generate:controller – 控制器生成器generate:seed – 数据库填充器generate:migration – 迁移generate:pivot – 关联表generate:resource -资源generate:scaffold – 脚翻译 2014-10-06 14:04:40 · 13149 阅读 · 0 评论 -
基于PHP的crontab定时任务管理
基于PHP的crontab定时任务管理原创 2014-11-10 20:14:42 · 21112 阅读 · 1 评论 -
composer之创建自己的包
如何在packagist上递交自己的包原创 2014-11-05 21:45:05 · 18629 阅读 · 5 评论 -
PHP模拟SQL的GROUP BY算法
PHP模拟SQL的GROUP BY算法原创 2015-01-26 13:53:49 · 11890 阅读 · 1 评论 -
PHP微信SDK——Zebra-Wechat
PHP微信SDK——Zebra-Wechat原创 2014-12-16 15:40:08 · 6967 阅读 · 0 评论 -
简易HTTP协议解析
TCP协议为操作系统底层协议,能够保证应用层获取到完整的、顺序一直的包序列。但TCP不提供具体的分包,需要上层协议自己解决。TCP发送给上层协议的数据是一个没有意义的字符串序列。如何解释这段序列,需要应用层定义,也就是应用层协议规范的内容。 应用层协议按格式一般可以分为文本协议和二进制协议。文本协议最常见的就是HTTP,二进制协议如websocket。无论是哪种协议,都需要对格式严格定义,以方便程序对字符串序列进行分包、拆包。转载 2015-09-01 19:24:40 · 10512 阅读 · 0 评论 -
简单PHP性能记录工具
最近写了一个异步mysql客户端的封装,想与传统的串行方式做下性能对比。包括运行时间、内存使用情况等信息。在github和packagist上搜索并没有找到自己想要的,xhprof又太大了,结果也太复杂,不符合现在的需要。所以决定自己写一个package,来实现对php脚本运行时间和内存使用情况的监控,并生成报告。转载 2015-09-01 19:25:15 · 5205 阅读 · 0 评论 -
SimpleFork php多进程并发框架
多进程程序的编写相比较多线程编写更加复杂,需要考虑进程回收、同步、互斥、通信等问题。对于初学者来说,处理上述问题会比较困难。 尤其是信号处理和进程通信这块,很难做到不出问题。 SimpleFork提供一套类似于JAVA多线程的进程控制接口,提供回收、同步、互斥、通信等方案,开发者可以关注业务问题,不需要过多考虑进程控制。转载 2015-09-01 19:23:40 · 7941 阅读 · 0 评论 -
PHP异步并发访问mysql简单实现
在实际的开发过程中,我们常常会遇到需要操作多张表,多个库的情况。有时因为一些限制我们不能进行连表(例如,异地数据库),所以只能用php串行访问后再在php里进行合并,有时还需要模拟mysql对合并后的结果进行排序、归并等。这里产生的一个问题就是串行带来的访问时间问题。由于传统的串行访问方式,我们只能等到一条sql执行完毕后才可以执行下一条,所以执行时间是累加的。PHP官方手册提供了一种可以异步并发访问mysql的方式,详见:http://php.net/manual/zh/mysqli.poll.php转载 2015-09-01 19:26:54 · 13136 阅读 · 1 评论 -
wordpress全栈优化
从最开始计算,《始终不够》个人博客上线已经有两年多了。从最开始就是使用的wordpress,最初为了丰富站内功能,使用了一箩筐的插件,首页加载基本在10s以上,期间使用xhprof做过几次优化,都不是很理想。最近抽出时间整体做了一次性能优化。首页响应时间从1s减少到20ms,并发度从2/s增加到500/s。可以说是有了质的飞跃。这里分享下这次的优化过程。首先,确定我们要优化的组件:浏览器端优化php端优化nginx优化转载 2015-09-06 19:56:05 · 6612 阅读 · 0 评论 -
递归与循环
原创文章,转载请注明: 转载自始终不够本文链接地址: 递归与循环转载请注明:始终不够 » 递归与循环大一学C++的时候,老师说过递归与循环是可以相互转化的,当时好像是用来两重循环解决递归问题,算法的复杂度依然是O(n)。最近发现可以通过模拟实现栈结构通过一重循环实现非递归算法。递归必须满足以下两个条件:在每一次调用自己时,必须是(在某种意义上)更接近于解转载 2015-09-06 20:27:06 · 5795 阅读 · 0 评论 -
Open Flash Chart极简单入门教程 英文翻译
如何让Open Flash Chart运作在这一节里,我们将尝试将下面的图表实施在你的web站点上,如下图所示:1、 安装文件在我们开始之前,你应该将Open Flash Chart的压缩包下载下来。打开你所下载下来的压缩包,进入version-2文件加下,将open-flash-chart.swf文件复制到你的服务器根目录下。你可以移动所有的文件到任何翻译 2012-07-26 14:44:00 · 3995 阅读 · 0 评论 -
使用PHP进行HTTP认证
<br /><br /> 我们在登录某些安全性较高的网站时,有时候可能会遇到这种情况:直接在网页上<br />弹出一个windows窗口,要求输入认证的用户名和密码,只有认证登录成功才能看到内<br />容,否则的话则连该页面都无法打开,这是一种HTTP认证的的方式,它大大加强了系统<br />的保密性和安全性,那这是如何实现的呢,下面我就简要向大家介绍一下.<br />利用PHP来实现HTTP的强制认证是十分简单的,只需简单的几行代码就可以实现,下面<br />我们来看一个例子,然后结合这里例子我原创 2011-01-29 12:45:00 · 3864 阅读 · 0 评论 -
PHP与MYSQL搭配出现中文乱码的“终极”解决方案
PHP程序设计中中文编码问题曾经困扰很多人,导致这个问题的原因其实很简单,每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII 码, 中国的 GB2312-80,日本的 JIS 等。作为该国家/区域内信息处理的基础,字符编码集起着统一编码的重要作用。字符编码集按长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类。早期的软件(尤其是操作系统),为了解决本地转载 2011-08-08 19:42:19 · 7768 阅读 · 0 评论 -
php编程设计安全方面的18条“军规”
规则 1:绝不要信任外部数据或输入 关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data)包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。 例如,下面的数据元素可以被认为是安全转载 2011-12-06 13:32:38 · 1332 阅读 · 0 评论 -
使用SQL语句导出MYSQL数据库及基本表的创建SQL语句
因为之前开发项目对于MYSQL的数据库备份一直都是很模糊的,所以今天百度了下各种数据库备份的PHP类,有幸看到几个比较牛逼的类,综合其优缺点,争取组合成一个接口更加合理,更加简单易用的类。在这个过程中,看到了一段有意思的SQL代码,所以决定在博客里面写出来给大家一起分享:$result=$this->db->Query("show create table $tableName");原创 2011-12-07 21:42:22 · 2149 阅读 · 0 评论 -
开发一个类的流程
2011-12-9 本人近日根据自己的开发经验总结了一个类的开发流程。这个流程适用于单独开发的构件,并不适用于对一个项目中的系统对象开发。开发出的类可以存入私人类库,供以后复用。 以下是开发流程:1. 明确类的功能,抽象出类的大概结构2. 初步设想类的接口3. 类名设计(驼峰式命名)4. 属性设置(权限设置)判断某些变量是否有必要作为成员属性,应注意,原创 2011-12-09 12:20:12 · 912 阅读 · 0 评论 -
PHP导出CSV文件
经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限。这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。 // 输出Excel文件头,可把user.csv换成你要的文件名 header('Content-Type转载 2011-12-13 21:27:50 · 13884 阅读 · 0 评论 -
PHP Output control 扩展详解(多篇文章整合,详细,易懂)
Output control 扩展详解程序猿始终不够2012-05-14微博:http://weibo.com/ybchrist 自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header()或setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo()和 PHP 代原创 2012-05-14 17:07:36 · 2614 阅读 · 0 评论 -
PHP ini_set函数
PHP ini_set函数作者:太平裂碑 发布:2011-04-08 15:30在PHP配置函数中,有一种函数的功能是实现设置php.ini中的某些变量值的。它就是我们今天要为大家介绍的PHP ini_set函数。PHP ini_set函数是设置选项中的值,在执行函数后生效,脚本结束的时候,这个设置也失效。不是所有的选项都能被改函数设置的。具体那些值能够设置转载 2012-05-15 10:06:29 · 1775 阅读 · 0 评论 -
PHP PDO访问数据库
PHP PDO访问数据库BY FUSHANLANG, ON SEPTEMBER 26TH, 2010原文地址:http://www.fushanlang.com/blog/php-pdo-to-access-the-database-1032/[翻译]为什么你应该使用PHP PDO访问数据库许多PHP程序员学习过如歌使用MySQL或MySQL转载 2012-05-16 20:37:19 · 5025 阅读 · 0 评论 -
使用Include函数的返回值
記得以前在thinkphp中看到一種寫法,一個文件中只有一條return語句,而return的內容是一個數組例如下面代碼:included.php<?phpreturn array(1,2,3,4,5);當時我猜想其應該是把這個數組當做include函數的返回值。經過測試果然如此,看如下調用代碼:include.php<?php$arr = include 'included.ph原创 2012-05-22 15:08:39 · 1810 阅读 · 0 评论 -
Wordpress主题制作不完全指南
程序猿始终不够新浪微博:weibo.com/ybchris引言 如果你有些HTML经验或者有些套后台的经历,那么wordpress的主题模板开发方式绝对会令你耳目一新。刚刚接触wordpress的时候,我不禁怨恨其没有使用强大的模板引擎,造成了前台的混乱。在后来的学习中,我逐渐感受到了wordpress的强大,虽然它的很多优点我还不是很清楚,但我所接触到的东西已经能让我确定这是一原创 2012-07-22 10:16:09 · 3707 阅读 · 0 评论 -
Open Flash Chart图表的JSON格式基本属性详解
数据文件必须是JSON格式.JSON对象的基本格式:{}把所有对象都编写在{}里面.让它看起来像下面 JSON 数据格式:{ "title":{ "text": "Many data lines", "style": "{font-size: 20px; color:#0000ff; font-family: Verdana; text-align: cen转载 2012-07-26 14:38:54 · 1300 阅读 · 0 评论 -
关于以UTF8编码的文件,php发送header时报错的原因
最近在给实习的同事讲解关于wordpress的二次开发。这几天他们的工作中经常遇到一个问题,问题描述如下:访问wordpress网站时经常会报错,说是再header函数之前就已经有输出了字符,且是在functions.php文件的第一行。 当我一次次修改该文件无效果的情况下,我删除了文件中的所有内容,结果依旧。所以我开始怀疑编码问题,并将编码改为ANSI编码,问题解决了。但我们的原创 2012-08-20 16:34:41 · 1918 阅读 · 0 评论 -
PHP中header()立即重定向的不友好性
PHP程序猿经常会采用header函数进行重定向页面,如果重定向是立即的,本人认为存在以下几点不友好性:一,用户再不清楚操作返回状态的情况下,被强制性跳转到了其他界面,造成用户填写数据的丢失,以及返回状态的不明确问题.二,用户大多希望能够在递交页面之后,仅返回状态信息而保留原有界面,这样看,AJAX更适合返回用户操作状态.另外,个人观点认为,不应该通过header函数进行页面重原创 2013-01-22 09:30:18 · 4172 阅读 · 0 评论 -
ORM映射的弊端以及它对数据库优化影响
首先简单的介绍下ORM关系对象映射的概念。虽然NOSQL现在在迅速崛起,但大多数人仍然在使用稳定的关系型数据库,我们将数据组织成记录存储在关系数据库中,每一行代表一条记录。现代编程中,面向对象技术应用已经非常广泛,关系型数据库的数据组织形式与面向对象的数据组织形式存在根本上的差异。ORM的任务就是将关系型数据库中的数据通过ORM层映射为对象,使之能够应用于面向对象程序,方便编程。它确实原创 2013-02-01 14:22:36 · 8277 阅读 · 2 评论 -
substr(),mb_substr()及mb_strcut的区别和用法
substr(),mb_substr()及mb_strcut的区别和用法 substr()函数可以 分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr() /mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码转载 2011-01-13 10:30:00 · 829 阅读 · 0 评论 -
PHP异步编程简述
概述异步编程,我们从字面上理解,可以理解为代码非同步执行的。异步编程可以归结为四种模式:回调、事件监听、发布/订阅、promise模式。我们最熟悉的两种模式是回调和事件监听,举两个最简单的javascript例子,一个ajax,一个点击事件的绑定:123$.getJSON("uri", params, function转载 2015-10-15 09:56:17 · 15016 阅读 · 0 评论