PHP

php phalcon框架数据库连接改为长连接后,插入性能极大提升

php phalcon框架数据库连接改为长连接后,压力测试插入性能极提升3倍多

<?php

// Create a connection with PDO options
$connection = new \Phalcon\Db\Adapter\Pdo\Mysql(
    [
        "host"     => "localhost",
        "username" => "root",
        "password" => "sigma",
        "dbname"   => "test_db",
        "options"  => [ //这里加上此附加参数
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'",
            
                    

亿级用户PC主站的PHP7升级实践

伴随业务的增长,系统压力也在不断增加,再加上机房机架趋于饱和,无法更加有效应对各种突发事件。在这样的情况下,PC主站升级为PHP 7,有哪些技术细节可以分享?

背景

新浪微博在2016年Q2季度公布月活跃用户(MAU)较上年同期增长33%,至2.82亿;日活跃用户(DAU)较上年同期增长36%,至1.26亿,总注册用户达8亿多。PC主站作为重要的流量入口,承载部分用户访问和流量落地,其中我们提供的部分服务(如:头条文章)承担全网所有流量。…

    

PHP高级编程之消息队列

PHP高级编程之消息队列

 

摘要

2015-10-19 第一版

2016-11-31 第二版

目录

1. 什么是消息队列

消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式

PHP的队列(Queue)

异步并发的服务器里经常使用队列实现生产者消费者模型,解决并发排队问题。PHP的SPL标准库中提供了SplQueue扩展内置的队列数据结构。另外PHP的数组也提供了array_poparray_shift可以使用数组模拟队列数据结构。

SplQueue

$queue = new SplQueue;
//入队
$queue->push($data);
//出队
$data = $queue->shift();
//查询队列中的排队数量
$n = count(
    

使用 PHP 和 Phalcon 作 daemon 进程

某些情况下,我们除了提供web界面给用户,还需要运行一些后台任务。这些任务可能是由用户触发的(比如用户提交了一个请求,而这种请求很特殊,例如从github克隆一个项目并执行构建,至少需要几分钟才能执行完成,这种情况不适合阻塞的方式让浏览器等待结果返回);也可能是一些常规性的系统任务(比如将日志进行归档,转移到统一的地方进行备份)。前者一般是引入消息队列,用户的请求只是增加了一条待构建的消息到消息队列,然后有一个专门的订阅者读取消息,调度分发执行这个任务。后者最简单的方式便是crontab,但缺点是每个机器需要单独进行设置,不易维护;当然也可以通过一个统一的调度器,分发任务到多个任务节点的方式来执行。…

        

Phalcon initialize 和 onConstruct在Controller和Model中的初始化

Phalcon 中在Controller和Model中的初始化方法容易比较混淆的有initialize() 和 onConstruct();

值得注意的是initialize() 在控制器的一次request只会执行一次, 在Model中也是只会执行一次.
因此在控制器Controller1中执行initialize()后, 后面的代码再次使用new Controller1(), 或者再调用new Controller2()是不会执行Controller1或Controller2中的initialize方法的.…

    

phalcon设置统一数据库表前缀

<?php
class BaseModel extends \Phalcon\Mvc\Model {
    public function getSource()
    {
        return 'v1'.strtolower(get_class($this));
    }
}

新建一个基础模型,然后所有的模型在该类上继承即可,原文中的小写函数书写错误,应该是strtolower