Me7*_*888 2 php foreach multithreading pthreads
如何将代码从核心PHP转换为Pthread代码
我的核心PHP代码:
require_once 'xyz.php';
$count="0";
foreach($sites as $site)
{
require_once 'allsite/'.$site.'.php';
$siteObj = new $site;
$data[$count] = $siteObj->getsiteData($query,$cat);
$count++;
}
Run Code Online (Sandbox Code Playgroud)
如何以Pthread方式执行foreach循环代码(多线程)
在foreach循环执行完成正常PHP的东西完成后(在foreach循环后意味着没有多线程)
注意:我已经在PHP中安装并配置了pthread
包括评论.
<?php
//Require Core Component
require_once("xyz.php");
$Threads = new StackableArray();
//A Global Storage that will be shared between threads.
$Storage = new Storage();
//Store {count} in Global Storage
$Storage['count'] = 0;
/*
* For Each Site, spawn a new thread, process the site and store result in Global Storage.
*/
foreach($sites as $site)
{
$Thread = new SiteProcess($Storage, $site);
$Thread->start();
$Threads[$re] = $Thread;
}
//When the threads are complete, join them(destroy the threads)
foreach($Threads as $Thread)
{
$Thread->join();
}
//A thread class
class SiteProcess extends Threads
{
private $Storage;
private $site;
public function __construct(Storage $Storage, $site)
{
$this->Storage = $Storage;
$this->site = $site;
}
public function run()
{
require_once("allsite/{$this->site}.php");
$siteObj = new $this->site;
$this->Storage[$this->Storage['count']] = $siteObj->getsiteData($query, $cat);
$this->Storage['count'] = $this->Storage['count'] + 1;
}
}
class StackableArray extends Stackable { public function run() { } };
class Storage extends Stackable { public function run() { } };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7078 次 |
| 最近记录: |