نحوه فعال کردن Pthreads در xampp

در این آموزش قصد دارم نحوه نصب pthreads بر روی xampp را آموزش بدم. pthreads یک اکستنشن برای برنامه نویسی چندنخی توی php هست. از اونجا که در نصب این اکستنشن توی xampp به مشکل خوردم، اینجا راهکار رو میگم که دوستانی که مشکل دارن از این آموزش بتونن نصب رو انجام بدن.

 

برای نصب این اکستنشن ابتدا لازم است نسخه php خودتون و نسخه کامپایلر رو بدونین. برای اینکار می تونید از دستور phpinfo() توی php استفاده کنید.

ویندوز من یک ویندوز 7 نسخه 64 بیتی است اما توجه کنید که Xamppی که من نصب کردم نسخه 32 بیتی است. خود php هم ورژن 5.6 است و کامپایلر هم VC11 است.

حال باید نسخه pthreads مرتبط با سیستم خودم رو نصب کنم. برای اینکار باید به آدرس رفته:

http://windows.php.net/downloads/pecl/releases/pthreads/

و نسخه مرتبط با xampp رو پیدا کنید. برای من این نسخه در آدرس:

http://windows.php.net/downloads/pecl/releases/pthreads/2.0.9/

قرار داشت. وقتی وارد این قسمت میشن، چند فایل برای دانلود هست که نام هر فایل نشان دهنده مشخصات هر فایل هست. من فایل :

php_pthreads-2.0.9-5.6-ts-vc11-x86.zip

رو دانلود کردم. که در نام این فایل، عدد 5.6 نشان دهنده نسخه php، عدد vc11 نشان دهنده نسخه کامپایلر و عدد x86 نشان دهنده نسخه 32 بیتی xampp من است. (دقت کنید که منظور از آن، نسخه ویندوز شما نیست. یعنی من نسخه ویندوزم 64 بیتیه اما نسخه xampp من 32 بیتیه. پس من باید نسخه 32 بیتی رو دانلود کنم.)

پس از اینکه این فایل رو دانلود کردید، باید اکسترکت کنید. در داخل پوشه اکسترکت شده:

  • فایل pthreadVC2.dll رو به پوشه c:/xampp/php کپی کنید.
  • فایل pthreadVC2.dll رو به پوشه c:/windows/system32 کپی کنید.
  • فایل php_pthreads.dll رو به پوشه c:/xampp/php/ext کپی کنید.
  • در فایل php.ini دستور extension=php_pthreads.dll را اضافه کنید.
  • در فایل httpd-xampp.conf دستور LoadFile "C:/xampp/php/pthreadVC2.dll" را اضافه کنید.
  • در فایل httpd.conf دستور LoadFile "C:/xampp/php/pthreadVC2.dll" را اضافه کنید.
  • اکنون apache را restart کنید.

اکنون میتونید برنامه چندنخی بنویسید. برای تست این دستور رو اجرا کنید:

 


<?php
class AsyncOperation extends Thread {

public function __construct($arg) {
$this->arg = $arg;
}

public function run() {
if ($this->arg) {
$sleep = mt_rand(1, 10);
printf('%s: %s -start -sleeps %d' . "\n", date("g:i:sa"), $this->arg, $sleep);
sleep($sleep);
printf('%s: %s -finish' . "\n", date("g:i:sa"), $this->arg);
}
}
}

// Create a array
$stack = array();

//Initiate Multiple Thread
foreach ( range("A", "D") as $i ) {
$stack[] = new AsyncOperation($i);
}

// Start The Threads
foreach ( $stack as $t ) {
$t->start();
}

?>

 

اضافه کردن نظر


کد امنیتی
تغییر کد امنیتی