php技巧

php 实现账号不能同时登陆的方法分析【当其它地方登陆时,当前账号失效】

2020-03-05
本文实例讲述了php 实现账号不能同时登陆的方法.分享给大家供大家参考,具体如下: 解决的思路是每当用户登陆时我们必需记录当前的用户id和session_id,如果有人在其它地方用此账号登陆时,我们把此用户id对应的session_id的session文件删除,并重新记录当前的session_id.那么之前的用户就失效了. login.php代码如下: <?php session_start(); require 'db.php'; if(!empty($_POST['submit'])) {

PHP ajax跨子域的解决方案之document.domain+iframe实例分析

2020-03-04
本文实例讲述了PHP ajax跨子域的解决方案之document.domain+iframe.分享给大家供大家参考,具体如下: 对于主域相同,子域不同,我们可以设置相同的document.domain来欺骗浏览器,达到跨子域的效果. 例如:我们有两个域名:www.a.com 和 img.a.com 在www.a.com下有a.html 在img.a.com下有img.json和img.html这两个文件. img.json就是一些我们要获取的数据: [ { "name" : "

php 中的信号处理操作实例详解

2020-03-04
本文实例讲述了php 中的信号处理操作.分享给大家供大家参考,具体如下: 首先我们需要了解几个函数 pcntl_signal   安装信号处理器,也就是当指定信号发生时,调用函数. pcntl_alarm   指定秒数后向进程发送SIGALRM信号. posix_getpid 返回当前进程id posix_kill       给指定进程发送信号 一些常用的信号说明 SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业

PHP下ajax跨域的解决方案之window.name实例分析

2020-03-04
本文实例讲述了PHP下ajax跨域的解决方案之window.name.分享给大家供大家参考,具体如下: 原理核心:window对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持不变. 依此原理,我们可以在页面A中用iframe加载其他域的页面B,而页面B中用JavaScript把需要传递的数据赋值给 window.name,页面A的iframe加载完成之后,页面A修改iframe的地址,将其变成同域的一个地址,然后就可以读出w

php+iframe 实现上传文件功能示例

2020-03-04
本文实例讲述了php+iframe 实现上传文件功能.分享给大家供大家参考,具体如下: 我们通过动态的创建iframe,修改form的target,来实现无跳转的文件上传. 具体的实现步骤 1.捕捉表单提交事件 2.创建一个iframe 3.修改表单的target,指向iframe 4.删除iframe file.html代码如下: <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset

php+ajax实现文件切割上传功能示例

2020-03-03
本文实例讲述了php+ajax实现文件切割上传功能.分享给大家供大家参考,具体如下: html5中的File对象继承Blob二进制对象,Blob提供了一个slice函数,可以用来切割文件数据. <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <bo

php多进程中的阻塞与非阻塞操作实例分析

2020-03-03
本文实例讲述了php多进程中的阻塞与非阻塞操作.分享给大家供大家参考,具体如下: 我们通过pcntl_fork来创建子进程,使用pcntl_wait和pcntl_waitpid来回收子进程. 子进程退出后,父进程没有及时回收,就会产生僵尸进程. 例1: <?php define('FORK_NUMS', 5); $pids = array(); //我们创建5个子进程 for($i = 0; $i < FORK_NUMS; ++$i) { $pids[$i] = pcntl_fork(); i

php libevent 功能与使用方法详解

2020-03-03
本文实例讲述了php libevent 功能与使用方法.分享给大家供大家参考,具体如下: libevent是一个基于事件驱动的高性能网络库.支持多种 I/O 多路复用技术, epoll. poll. dev/poll. select 和 kqueue 等:支持 I/O,定时器和信号等事件:注册事件优先级. 常量如下: 值 常量名 含义 1 EV_TIMEOUT 超过时间后事件成为激活状态 2 EV_READ FD就绪,可以读取的时候 ,事件成为激活状态 4 EV_WRITE FD就绪,可以写入的

php 函数中静态变量使用的问题实例分析

2020-03-02
本文实例讲述了php 函数中静态变量使用的问题.分享给大家供大家参考,具体如下: <?php function msg() { static $a = 0; echo $a++, '<br />'; } msg(); msg(); msg(); 上述代码,分别输出0,1,2 静态变量$a在第一次定义并初始化后就会常驻内存,直到脚本执行完毕. 当第二次调用msg()函数时,这时的$a值为1,而不会变成0. 那么问题来了,请看下面的一段代码: $data = array( array('id

PHP的反射动态获取类方法、属性、参数操作示例

2020-03-02
本文实例讲述了PHP的反射动态获取类方法.属性.参数操作.分享给大家供大家参考,具体如下: 我们可以在PHP运行时,通过PHP的反射动态的获取类的方法.属性.参数等详细信息. 用途:插件的设计,文档的自动生成,扩充PHP语言. <?php class Person { const weightUnit = 'kg'; const heightUnit = 'cm'; public $name = 'test'; public $age = 1; public function say($msg

php 使用html5 XHR2实现上传文件与进度显示功能示例

2020-03-02
本文实例讲述了php 使用html5 XHR2实现上传文件与进度显示功能.分享给大家供大家参考,具体如下: 思路:只要我们知道上传文件的总大小,还有上传过程中上传文件的大小,那么就可以实现进度显示了. 在html5中,XMLHttpRequest对象,传送数据的时候,progress事件用来返回进度信息. 它分成上传和下载两种情况 1.下载的progress事件属于XMLHttpRequest对象 2.上传的progress事件属于XMLHttpRequest.upload对象. 与progre

php 输出缓冲 Output Control用法实例详解

2020-03-01
本文实例讲述了php 输出缓冲 Output Control用法.分享给大家供大家参考,具体如下: 关于php的输出缓冲,首先要说明的是什么是缓冲(buffer),比如我们通过记事本在编辑文件的时候,并不是我们输入了内容,系统就会立刻向磁盘中写入数据.只有我们在保存文件后,系统才会向磁盘写入数据.而之前我们输入的内容全部保存在了文件缓冲区中,只有当缓冲区写满或者执行保存时,数据才会写入磁盘. 而php的输出缓冲也一样,当我们通过echo,print等函数输出时,这些内容首先会保存在output

php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析

2020-03-01
本文实例讲述了php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法.分享给大家供大家参考,具体如下: 一.opcache opcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销. PHP 5.5.0 及后续版本中已经绑定了 opcache 扩展. 对于 PHP 5.2,5.3 和 5.4 版本可以使用PECL扩展中的 opcache 库. window

PHP 加密 Password Hashing API基础知识点

2020-02-28
PHP 5.5 之后引入 Password hashing API 用于创建和校验哈希密码,它属于内核自带,无需进行任何扩展安装和配置.它主要提供了四个函数以供使用: ● password_hash():创建密码的哈希: ● password_verify():验证密码是否和哈希匹配: ● password_needs_rehash():检查给定的哈希是否匹配给定的选项: ● password_get_info():返回指定哈希的相关信息. 1.password_hash(string pass

php下的原生ajax请求用法实例分析

2020-02-28
本文实例讲述了php下的原生ajax请求用法.分享给大家供大家参考,具体如下: 浏览器中为我们提供了一个JS对象XMLHttpRequet,它可以帮助我们发送HTTP请求,并接受服务端的响应. 意味着我们的浏览器不提交,通过JS就可以请求服务器. ajax(Asynchronous Javascript And XML)其实就是通过XHR对象,执行HTTP请求. 1.创建XHR对象 var xhr = new XMLHttpRequest(); //暂不考虑兼容 2.XHR的对象属性和方法 方法

php高性能日志系统 seaslog 的安装与使用方法分析

2020-02-27
本文实例讲述了php高性能日志系统 seaslog 的安装与使用方法.分享给大家供大家参考,具体如下: 一.什么是日志系统 一般用于记录系统运行时的信息,一般分为三类:系统日志,应用程序日志,安全日志.日志功能不能影响用户的正常使用. 二.为什么需要日志功能 1.了解系统运行情况     2.记录用户操作信息     3.收集数据 三.为什么选seaslog 1.高性能(使用C语言)     2.无需配置     3.功能完善,使用简单 四.安装seaslog 下载seaslog,根据自已的系统

php的无刷新操作实现方法分析

2020-02-27
本文实例讲述了php的无刷新操作实现方法.分享给大家供大家参考,具体如下: 方法一: 我们通过http的204状态码,页面不跳转. 1.html代码如下: <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <a href=&

gearman中worker常驻后台,导致MySQL server has gone away的解决方法

2020-02-27
本文实例讲述了gearman中worker常驻后台,导致MySQL server has gone away的解决方法.分享给大家供大家参考,具体如下: 产生这个原因主要有如下几点: 1.mysql服务宕机了 2.长时间没有操作,超过了wait_timeout的设置,mysql自动断开 3.mysql请求链接被主动kill 4.发送的请求或返回结果过大,可设置max_allowed_packet的值 5.程序中你都是通过单例来操作数据库,如果两个操作时间超过wait_timeout. 为了演示的

gearman管理工具GearmanManager的安装与php使用方法示例

2020-02-26
本文实例讲述了gearman管理工具GearmanManager的安装与php使用方法.分享给大家供大家参考,具体如下: 一.gearman自带了一个gearadmin工具 查看帮助信息 > gearadmin --help 查看状态 > gearadmin --status 查看worker信息 > gearadmin --workers 二.为什么要用GearmanManager 为什么要用GearmanManager来管理我们的worker,因为我们用php编写的worker是要常

PHP使用gearman进行异步的邮件或短信发送操作详解

2020-02-26
本文实例讲述了PHP使用gearman进行异步的邮件或短信发送操作.分享给大家供大家参考,具体如下: 一.准备工作 1.为了防止,处理业务途中出现的宕机,请配置好gearman的持久化方式. 2.使用gearmanManager来管理我们的worker脚本,方便测试. 上述两条请看我之前写的两篇文章 二.编写测试脚本 sendEmail.php代码如下: <?php //注意函数名与文件名相同 function sendEmail($job) { $workId = uniqid(); //wo