发布于 2014-06-20 11:31:13 | 341 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Swoole框架中文教程,程序狗速度看过来!

Swoole Framework PHP Web开发框架

Swoole是一个php扩展也是一种PHP高级Web开发框架,框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成!


Swoole是一种PHP高级Web开发框架,框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成!

swoole 1.7.3 发布,PHP的异步并行扩展swoole,最近增加了多进程管理模块swoole_process,用来替代PHP的pcntl扩展。

PHP自带的pcntl,存在很多不足,如

    pcntl无法用在fpm/apache中

    pcntl没有提供进程间通信的功能

    pcntl不支持重定向标准输入和输出

    pcntl只提供了fork这样原始的接口,容易使用错误

swoole_process提供了比pcntl更强大的功能,更易用的API,使PHP在多进程编程方面更加轻松。swoole_process提供了如下特性:

    swoole_process提供了基于unixsock的进程间通信,使用很简单只需调用recv/send即可

    swoole_process支持重定向标准输入和输出,在子进程内echo不会打印屏幕,而是写入管道,读键盘输入可以重定向为管道读取数据

    swoole_process允许用于fpm/apache的Web请求中

    配合swoole_event模块,创建的PHP子进程可以异步的事件驱动模式

    swoole_process提供了exec接口,创建的进程可以执行其他程序,与原PHP父进程之间可以方便的通信

    swoole_process可以安全地用于fpm/apache环境下

代码示例:

$worker_num = 8;

for($i = 0; $i < $worker_num; $i++)
{
    $process = new swoole_process('callback_function', true);
    $pid = $process->start();
    $workers[$pid] = $process;
}

foreach($workers as $pid => $process)
{
    $process->write("hello worker[$pid]n");
    echo "From Worker: ".$process->read();
}

for($i = 0; $i < $worker_num; $i++)
{
    $ret = swoole_process::wait();
    $pid = $ret['pid'];
    unset($workers[$pid]);
    echo "Worker Exit, PID=".$pid.PHP_EOL;
}

function callback_function(swoole_process $worker)
{
    //echo "Worker: start. PID=".$worker->pid."n";
    //recv data from master
    $recv = $worker->read();
    echo "From Master: $recvn";

    //send data to master
    $worker->write("hello mastern");

    sleep(2);
    $worker->exit(0);
}

子进程事件驱动模式

function callback_function_async(swoole_process $worker)
{
    //echo "Worker: start. PID=".$worker->pid."n";
    //recv data from master
    $GLOBALS['worker'] = $worker;
    swoole_event_add($worker->pipe, function($pipe) {
        $worker = $GLOBALS['worker'];
        $recv = $worker->read();

        echo "From Master: $recvn";

        //send data to master
        $worker->write("hello mastern");

        sleep(2);

        $worker->exit(0);
    });
}

PHP创建一个Python子进程,并与之通信

$process = new swoole_process('pyhon_process', true);
$pid = $process->start();

function pyhon_process(swoole_process $worker)
{
    $worker->exec('/usr/bin/python', array("echo.py"));
}

$process->write("hello worldn");
echo $process->read();

$ret = swoole_process::wait();
var_dump($ret);

Python程序echo.py

import sys

def main():
    s = raw_input()
    print "Python:" + s

main()



历史版本 :
Swoole 1.10.0 发布,增加多项新特性
Swoole 1.9.22 发布,增加 Async::exec 功能
SwooleDistributed 框架 2.5 发布,全面支持 Docker
Swoole 1.9.19 发布,BUG 修复版本
Swoole 1.9.17 发布,增加静态文件处理器
Swoole 1.9.15 发布,增加静态编译支持
Swoole 1.9.11 发布,心跳检测支持时间轮算法
Swoole 1.9.9 发布,BUG 修复版本
Swoole 1.9.7 发布,增加 Http2.0 异步客户端
Swoole 1.9.6 发布,增加高性能序列化模块
Swoole 2.0 正式版发布,协程特性支持 PHP 7
Swoole 1.9.1 发布,Bug 修复版本
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务