精华内容
下载资源
问答
  • 主要介绍了PHP pthreads v3下同步处理synchronized用法,结合实例形式分析了PHP pthreads v3下同步处理synchronized原理、使用方法及相关操作注意事项,需要的朋友可以参考下
  • 主要介绍了php pthreads多线程的安装与使用 的相关资料,需要的朋友可以参考下
  • 主要介绍了基于PHP pthreads实现多线程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了PHP pthreads v3下worker和pool的使用方法,结合实例形式分析了PHP pthreads v3下worker和pool的基本功能、原理、使用方法及相关操作注意事项,需要的朋友可以参考下
  • 主要介绍了PHP pthreads v3下的Volatile简介与使用方法,结合实例形式较为详细的分析了PHP pthreads v3下Volatile的功能、原理、使用方法及相关操作注意事项,需要的朋友可以参考下
  • Php pthreads和monolog

    2016-01-24 12:07:39
    <p>I cannot use monolog logger inside Thread method run. ...<p>Here <a href="https://stackoverflow.com/questions/28783282/php-pthreads-and-sqlite3">PHP pthreads and SQLite3</a> and here ...
  • 主要介绍了PHP pthreads v3使用中的一些坑和注意点,总结分析了PHP pthreads v3使用过程中经常遇到的各种问题及相关操作注意事项,需要的朋友可以参考下
  • 主要介绍了PHP pthreads v3在centos7平台下的安装与配置操作方法,结合图文与实例形式分析了PHP pthreads v3在centos7平台下的安装与配置操作具体步骤、相关命令与注意事项,需要的朋友可以参考下
  • PHP的多线程使用:pthreadsPHP#多线程 #pthreads2014-04-30 13:21在PHP 5.3 以上版本,使用PHP扩展pthreads,可以使得PHP真正地支持多线程。多线程在处理重复性的循环任务,能够大大缩短程序执行时间。PHP扩展下载:...

    PHP的多线程使用:pthreads

    PHP

    #多线程 #pthreads2014-04-30 13:21

    在PHP 5.3 以上版本,使用PHP扩展pthreads,可以使得PHP真正地支持多线程。

    多线程在处理重复性的循环任务,能够大大缩短程序执行时间。

    PHP扩展下载:https://github.com/krakjoe/pthreads

    PHP手册文档:http://php.net/manual/zh/book.pthreads.php

    1、扩展的编译安装(Linux),编辑参数 --enable-maintainer-zts 是必选项:

    cd /Data/tgz/php-5.5.1

    ./configure --prefix=/Data/apps/php --with-config-file-path=/Data/apps/php/etc --with-mysql=/Data/apps/mysql --with-mysqli=/Data/apps/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir=/Data/apps/libs --with-jpeg-dir=/Data/apps/libs --with-png-dir=/Data/apps/libs --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt=/Data/apps/libs --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts

    make clean

    make

    make install

    unzip pthreads-master.zip

    cd pthreads-master

    /Data/apps/php/bin/phpize

    ./configure --with-php-config=/Data/apps/php/bin/php-config

    make

    make install

    vi /Data/apps/php/etc/php.ini

    添加:

    extension = "pthreads.so"

    2、给出一段PHP多线程、与For循环,抓取百度搜索页面的PHP代码示例:

    class test_thread_run extends Thread

    {

    public $url;

    public $data;

    public function __construct($url)

    {

    $this->url = $url;

    }

    public function run()

    {

    if(($url = $this->url))

    {

    $this->data = model_http_curl_get($url);

    }

    }

    }

    function model_thread_result_get($urls_array)

    {

    foreach ($urls_array as $key => $value)

    {

    $thread_array[$key] = new test_thread_run($value["url"]);

    $thread_array[$key]->start();

    }

    foreach ($thread_array as $thread_array_key => $thread_array_value)

    {

    while($thread_array[$thread_array_key]->isRunning())

    {

    usleep(10);

    }

    if($thread_array[$thread_array_key]->join())

    {

    $variable_data[$thread_array_key] = $thread_array[$thread_array_key]->data;

    }

    }

    return $variable_data;

    }

    function model_http_curl_get($url,$userAgent="")

    {

    $userAgent = $userAgent ? $userAgent : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)';

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $url);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($curl, CURLOPT_TIMEOUT, 5);

    curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);

    $result = curl_exec($curl);

    curl_close($curl);

    return $result;

    }

    for ($i=0; $i < 100; $i++)

    {

    $urls_array[] = array("name" => "baidu", "url" => "http://www.baidu.com/s?wd=".mt_rand(10000,20000));

    }

    $t = microtime(true);

    $result = model_thread_result_get($urls_array);

    $e = microtime(true);

    echo "多线程:".($e-$t)."\n";

    $t = microtime(true);

    foreach ($urls_array as $key => $value)

    {

    $result_new[$key] = model_http_curl_get($value["url"]);

    }

    $e = microtime(true);

    echo "For循环:http://yige.org/php ".($e-$t)."\n";

    ?>

    相关文章

    展开全文
  • To reduce the time I re-write the program using Php Pthreads as multi threaded program. Now I have divided the file into 100 small files. Now 100 threads are manipulating the files separately. The ...
  • PHP pthreads学习笔记

    2016-01-30 15:21:00
    最近在学习PHP pthreads,我把相关的学习笔记整理了下共享给大家。 1. 开启多个线程并发执行。 1 <?php 2 class HelloWorld extends Thread { 3 public function __construct($world) { 4 $this->...

    最近在学习PHP pthreads,我把相关的学习笔记整理了下共享给大家。

     1. 开启多个线程并发执行。

     1 <?php
     2 class HelloWorld extends Thread {
     3     public function __construct($world) {
     4        $this->world = $world;
     5     }   
     6 
     7     public function run() {
     8         print_r(sprintf("Hello %s\n", $this->world));
     9         sleep(1);
    10     }   
    11 }
    12 
    13 for ($i=0; $i<10; $i++) {
    14     $pool[] = new HelloWorld('world' . $i);
    15 }
    16 
    17 foreach ($pool as $work) {
    18     $work->start();
    19 }

     

    2. 线程间是不能直接通过数组来交换数据的,因为php数组本身不是线程安全的。可以通过继承Stackable类来实现。具体代码如下:

    <?php
    class HelloWorld extends Thread
    {
        private $_data;
    
        public function __construct($data) {
           $this->_data = $data;
        }   
    
        public function run() {
            $this->_data[] = Thread::getCurrentThreadId();
            sleep(1);
        }   
    }
    
    class Storage extends Stackable
    {
        public function run(){}
    }
    $storage = new Storage();
    
    for ($i=0; $i<10; $i++) {
        $pool[] = new HelloWorld($storage);
    }
    
    foreach ($pool as $work) {
        $work->start();
    }
    
    print_r($storage);

     3. 给一个实际的例子。一个线程接收消息,一个线程处理消息。

    <?php
    class ReceiveMsg extends Thread
    {
        private $_data;
    
        public function __construct(&$data) {
           $this->_data = $data;
        }   
    
        public function run() {
            for ($i=0; $i<10; $i++) {
                $this->_data[] = $i; 
            }   
        }   
    }
    
    class DealMsg extends Thread
    {
        private $_data;
        public $done = true;
    
        public function __construct(&$data) {
           $this->_data = $data;
        }   
    
        public function run() {
            while ($this->done) {
                $val = $this->_data->shift();
                if (!$val) {
                    usleep(100);
                } else {
                    var_dump($val);
                }   
            }   
        }   
    }
    
    class Storage extends Stackable
    {
        public function run(){}
    }
    
    $storage = new Storage();
    
    $receiveMsg = new ReceiveMsg($storage);
    $receiveMsg->start();
    
    $dealMsg = new DealMsg($storage);
    $dealMsg->start();
    
    sleep(4);
    
    $dealMsg->synchronized(function($thread){
        $thread->done = false;
        //$thread->notify();
    }, $dealMsg);

    写在最后的几点:

    1.  一般都是用主线程来控制各个子线程的。

    转载于:https://www.cnblogs.com/colors-blog/p/5171122.html

    展开全文
  • php pthreads集成的thread类 没法停止进程啊,一直占着内存,关掉网页也不行。后来试了忽视断开然后判断是否断开再unset exit,也不行。 还试了pool类 worker类 都没用 求救
  • <p>I'm attempting to have a php script run multi-threaded using <a href="https://github.com/krakjoe/pthreads/issues/447" rel="nofollow">PHP pThreads</a> in a IIS 7 <a href="http://windows....
  • 本文实例讲述了PHP pthreads v3在centos7平台下的安装与配置操作方法。分享给大家供大家参考,具体如下:我的centos版本是7.4.1708,php的版本是7.2.4(注意要是线程安全版),如下图所示:首先我们在如下网址下载好...

    本文实例讲述了PHP pthreads v3在centos7平台下的安装与配置操作方法。分享给大家供大家参考,具体如下:

    我的centos版本是7.4.1708,php的版本是7.2.4(注意要是线程安全版),如下图所示:

    7d9dd96df78c047f98a72844783ebe41.png

    首先我们在如下网址下载好pthreads的源码:

    http://pecl.php.net/package/pthreads

    如:pthreads-3.1.6.tgz

    1、解压、并进入目录

    > tar xf pthreads-3.1.6.tgz

    > cd pthreads-3.1.6

    2、运行phpize,生成configure,如果没有配置PATH的,可以打上绝对路径。

    > phpize

    3、运行configure

    > ./configure --with-php-config=/data/php72/bin/php-config

    4、运行make && make install

    > make && make install

    如果出现如下情况,说明你的PHP与pthreads版本不兼容,如下图所示:

    f5a26a58db8ca3d8a0bdb122c8c58b79.png

    我们需要在github上搜索pthreads

    > https://github.com/krakjoe/pthreads

    注意下载zip包,我们要用最新的,不要进去releases,如果你的PHP版本是7.1可以去试试。

    如:pthreads-master.zip

    > unzip pthreads-master.zip

    > cd pthreads-master

    其余步骤跟上面一样

    如果你看到如下信息,说明你编译成功了。

    46037586ebf47076cc6ab7323d21a9c5.png

    (注意这里面有个坑,不要在php.ini下配置pthreads扩展,不然php-fpm无法启动,因为pthreads v3版本只能运行在cli下)

    通过如下命令查看ini文件位置:

    > php --ini

    然后在php.ini目录下复制一份,命名为php-cli.ini

    > cp php.ini php-cli.ini

    修改php-cli.ini文件

    extension_dir = "/data/php72/lib/php/extensions/no-debug-zts-20170718/"

    extension=pthreads.so

    重启php服务,查看pthreads扩展是否装上

    > php -m | grep pthreads

    希望本文所述对大家PHP程序设计有所帮助。

    展开全文
  • PHP pthreads很奇怪

    2014-03-07 08:22:31
    <p>sorry for my twisted english - it is not my native. <p>I have a trouble: pthreads works, but in some strange way: for example, I ... PHP built threadsafe, pthreads module is enabled. </div>
  • 1.安装libxml2-devel:yum -y install libxml2-...编译:./configure \--prefix=/usr/local/php \--with-config-file-path=/usr/local/php/etc/ \--enable-inline-optimization \--enable-shared \--enable-opcache...

    1.安装libxml2-devel:

    yum -y install libxml2-devel

    2.编译:

    ./configure \

    --prefix=/usr/local/php \

    --with-config-file-path=/usr/local/php/etc/ \

    --enable-inline-optimization \

    --enable-shared \

    --enable-opcache \

    --enable-fpm \

    --with-fpm-user=php \

    --with-fpm-group=web \

    --with-mysql=mysqlnd \

    --with-mysqli=mysqlnd \

    --with-pdo-mysql=mysqlnd \

    --with-gettext \

    --enable-mbstring \

    --with-iconv \

    --with-mcrypt \

    --with-mhash \

    --with-openssl \

    --enable-bcmath \

    --enable-soap \

    --with-libxml-dir=文件夹 \

    --enable-pcntl \

    --enable-shmop \

    --enable-sysvmsg \

    --enable-sysvsem \

    --enable-sysvshm \

    --enable-sockets \

    --enable-intl \

    --with-curl \

    --with-zlib \

    --enable-zip \

    --with-bz2 \

    --enable-xml \

    --with-pcre-dir \

    --with-gd \

    --enable-static \

    --enable-wddx \

    --with-xmlrpc \

    --with-libdir=/usr/lib64 \

    --with-jpeg-dir=/usr/lib64 \

    --with-freetype-dir=/usr/lib64 \

    --with-png-dir=/usr/lib64 \

    --enable-maintainer-zts \

    --enable-pthreads \

    --enable-debug

    展开全文
  • I am using PHP pthreads to do that. <p>The problem I have is that the threads start but they do not pass values to another object which is initialized within the thread. What I would like to do is ...
  • php pthreads 获取货运号代码实例

    千次阅读 2015-12-12 12:09:06
    首先安装php pthreads 安装参看:http://blog.csdn.net/terry_water/article/details/50252611 安装完成后就可以使用多线程了 1. 多线程方法,继承\Thread ,构造方法中new好下面要使用的对象,run方法写好要...
  • win7环境下,wampserver支持php pthreads pool类和worker对象。win10却不支持pool类的$this->worker->getConnection()连接数据库,网页直接报错,子进程自动重启,apache日志报错:Parent: child process 9256 ...
  • 本文实例讲述了PHP pthreads v3使用中的一些坑和注意点。分享给大家供大家参考,具体如下:一、子线程无法访问父线程的全局变量,但父线程可以访问子线程的变量class Task extends Thread{public $data;public ...
  • PHP pthreads 多线程操作

    2019-12-07 14:06:00
    1、php采用安全线程模式进行编译 --enable-maintainer-zts必须加上 configure_options=" '--prefix=/usr/local/...
  • <p>I am trying to execute a function inside a Thread though I get the error "Class 'Example' not found" ...<p>Uncaught Error: Class 'SirJoe\Model\Like' not found in lorem-ipsum.php:999</p> </div>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,473
精华内容 989
关键字:

phppthreads