吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5328|回复: 1
收起左侧

[会员申请] 申请会员ID:DSLSalamander

[复制链接]
吾爱游客  发表于 2019-8-9 11:22
1、申 请 I D:DSLSalamander
2、个人邮箱:469587851@qq.com
3、原创技术文章:本人主要从事PHP,Python开发,后端服务器维护,、

有个php小技巧可以分享下



PHP用pcntl可以实现多线程操作数据库。直接上代码,逻辑自己研究喽。

示例代码为:

/**
* 并发多线程运行任务,把任务拆解成区块,用多线程去并发执行
* @param callable $exeWorkers [任务函数体]
* @param [type]   $maxJob     [最大数量]
* @param [type]   $threadNum    [线程数量]
*/
function runJobWithThread(callable $exeWorkers,$maxJob,$threadNum)
{
    $pids = array();

    for($i = 0; $i < $threadNum; $i++){

        $pids[$i] = pcntl_fork();

        switch ($pids[$i]) {
            case -1:
                echo "fork error : {$i} \r\n";
                exit;

            case 0:
                $totalPage=ceil($maxJob / $threadNum);
                $param = array(
                    //'lastid' => $maxJob / $threadNum * $i,
                    //'maxid' => $maxJob / $threadNum * ($i+1),

                    'page_start' => $totalPage*$i,
                    'page_end' => $totalPage*($i+1),
                );

                $exeWorkers($param);
                exit;

            default:
                break;
        }

    }

    foreach ($pids as $i => $pid) {
        if($pid) {
            pcntl_waitpid($pid, $status);
        }
    }
}


使用时:

//1000个任务,10个线程
runJobWithThread(function($para){
    echo '进程ID:'.getmypid().',最小ID是【'.$para['page_start'].'】最大ID为:【'.$para['page_end'].'】'.PHP_EOL;
},1011,10);


可以实现多线程操作数据。


原文在
https://blog.csdn.net/q469587851/article/details/95306348 也是我的blog

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2019-8-9 11:29
抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 10:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表