php zan,zanphp 初探----安装篇

安装

zanphp 的安装详细步骤具体在 http://zanphpdoc.zanphp.io/,但是安装的时候,还是踩了一些坑,Mac 和 Ubuntu 我都安装过, 分享大家注意一下。

PHP 版本 >= 5.6,不然的话 composer 代码拉不下来。

Zan编译安装的时候,最好--disable-async-redis,如果不加这个参数,在 Ubuntu下面我编译失败,编译失败后,我删掉原来的代码,我又重新拉一份源码,再编译,成功了。 重新在原来基础上编译依,扩展依然安装不成功。编译完成后修改 php.ini 增加 extension=zan.so

在php.ini 配置 zanphp 的运行模式  zanphp.RUN_MODE = test

Mac 源码安装 apcu 的时候,因为我本地PHP 版本是 5.6 ,下载最新版本的时候,编译失败,下来一个 4 版本的安装成功。 编译完成。 配置 php.ini

测试并发

zanphp 解决的问题高并发和服务化的问题(我的理解),于是就写简单的代码测试一下并发

//操作数据库示例

public function dbOperation()

{

$demo = new GetDBData();

//执行sql语句

$result = (yield $demo->mySql());

if ($result[0]['score'] > 0) {

$score = $result[0]['score'];

$score--;

yield $demo->updateSql(['var' => ['id' => $result[0]['id'], 'score' => $score]]);

}

yield $this->r(0, 'json string', $result);

}

逻辑很简单,就是 表字段score > 0 的时候才会更新,如果不支持并发,会出现 score < 0 的情况。

siege -c 100 -r 10 127.0.0.1:8030/index/my/dbOperation (100 并发重复执行 10)

结果全部请求成功,score 没有出现负值,支持并发真是杠杠的。

同时写了一个 golang 的脚本,测试思路一样,主要比较一下性能。

package main

import (

"fmt"

"net/http"

"html/template"

"strings"

"database/sql"

"log"

_ "github.com/go-sql-driver/mysql"

)

func checkErr(err error) {

if err != nil {

panic(err)

}

}

func testSQL(w http.ResponseWriter, r *http.Request) {

db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")

checkErr(err)

//查询数据

rows, err := db.Query("SELECT * FROM test limit 1 ")

checkErr(err)

stmt, err := db.Prepare("update test set score=? where id=?")

checkErr(err)

for rows.Next() {

var id int

var score int

err = rows.Scan(&id, &score)

checkErr(err)

if score > 0 {

score--

_, err := stmt.Exec(score, id)

checkErr(err)

}

}

}

func main() {

http.HandleFunc("/", sayhelloName) //设置访问的路由

http.HandleFunc("/login",login) //设置访问的路由

http.HandleFunc("/testsql",testSQL) //设置访问的路由

err := http.ListenAndServe(":9090", nil) //设置监听的端口

if err != nil {

log.Fatal("ListenAndServe: ", err)

}

}

用同样的并发量,go 的一些请求失败。说明 zanphp 比 go 要高?我认为应该是的。

结束

zanphp 还是很强大的,对于需要高并发,服务化的提供解决方案。值得好好研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值