锁机制之PHP文件锁

    锁机制之所以存在是因为并发导致的资源竞争,为了确保操作的有效性和完整性,可以通过锁机制将并发状态转换成串行状态。作为锁机制中的一种,PHP的文件锁也是为了应对资源竞争。假设一个应用场景,在存在较大并发的情况下,通过fwrite向文件尾部多次有序的写入数据,不加锁的情况下会发生什么?多次有序的写入操作相当于一个事务,我们此时需要保证这个事务的完整性。 如下代码简单模拟了...阅读全文
    作者:绝缘体.. | 分类:PHP, 编程语言 | 阅读: | 标签:, , , ,

    php文件锁类防止并发

    工作间隙写了个文件锁的类,用于解决并发的一些问题。 <?php /** * 用于解决PHP在并发时候的锁控制,不同的锁之间并行执行,类似mysql innodb的行级锁 * @author www.phpernote.com */ class FileLock{ //文件锁存放路径 private $path=''; //文件句柄 private $fp=''; //锁文件 private $lockFile=''; /** * 构造函数 * @pa...阅读全文
    作者:绝缘体.. | 分类:MySQL, PHP, 数据库, 编程语言 | 阅读: | 标签:, , , ,

    导入导出MySQL数据库和自动备份MySQL数据库

    经常与MySQL打交道,难免要进行数据库的导入和导出操作,平时你是使用命令操作还是使用工具操作呢?以及数据库自动备份与恢复等容灾措施你都做了吗?本文将简要给大家讲解。 导入MySQL数据库 方法1:使用mysql命令导入数据库 执行命令: /usr/local/mysql/bin/mysql -u 用户名 -p 数据库名 < 文件名.sql 注意,导入的数据库名必须存在,如果不存在的话先要手动创建数据库或者将创建数...阅读全文
    作者:绝缘体.. | 分类:MySQL, PHP, 数据库, 编程语言 | 阅读: | 标签:, , , ,

    php Timer 页面运行时间监测类

    php Timer 页面运行时间监测类,可按不同key监测不同的运行时间。 <?php /** Timer class, 计算页面运行时间,可按不同key计算不同的运行时间 * Date: 2014-02-28 * Author: fdipzone * Ver: 1.0 * * Func: * public start 记录开始时间 * public end 记录结束时间 * public getTime 计算运行时间 * pulbic printTime 输...阅读全文
    作者:绝缘体.. | 分类:PHP, 编程语言 | 阅读: | 标签:, , , ,

    php cli下接受参数的几种方法

    php cli(命令行模式下)接受参数有多种方法,下面分享两种具体的方法。 (1)使用$argv接受参数 <?php //文件名:cli.php //注意以下两个变量仅在 register_argc_argv 打开时可用 print_r($argc); //CLI下获取参数的数目,最小值为 1 print_r($argv); //CLI下传递给脚本的参数数组,第一个参数总是当前脚本的文件名,因此 $argv[0] 就是脚本文件名 例如: php cli.php a b c abc...阅读全文
    作者:绝缘体.. | 分类:PHP, 编程语言 | 阅读: | 标签:, , , ,

    使用socket方式连接Nginx优化php-fpm性能

    Nginx连接fastcgi的方式有2种:TCP 和 unix domain socket 什么是Unix domain socket? Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流和数据队列,而管道通信则只能通过字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain soc...阅读全文
    作者:绝缘体.. | 分类:nginx, PHP, 开发工具, 编程语言 | 阅读: | 标签:, , , ,

    php 使用redis锁解决并发访问的问题

    分享一个php使用redis加锁解决并发访问的问题。 1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领码,在没有加锁限制的情况下,用户则可以使用同一个换领码同时兑换到多张优惠券。 常见的业务逻辑代码如下: if A(可以换领)    B(执行换领)    C(...阅读全文
    作者:绝缘体.. | 分类:PHP, redis, 数据库, 编程语言 | 阅读: | 标签:, , , ,