PHP multi-thread extension (main thread) pthreads Installation

Source: Internet
Author: User
Tags zts

Environment CentOS 6.3 64bit, php 5.4.5 pthreads need thread security environment, download the php installation package, unzip: tar zxvf php-5.4.5.tar.gz // name is not this I'm not sure, go to download and install myself :. /configure -- enable-zts -- prefix =/usr/local/php-zts make install. Then, install php of the thread-installed version to/usr/local/php-zts, currently, I do not know the impact of enabling thread security. Therefore, I have two test versions. Download and install pthreads: tar zxvf pthreads cd pthreads-0.0.45 // This article is the first stable version/usr/local/php-zts/bin/phpize. /configure -- with-php-config =/usr/local/php-zts/bin/php-configmakemake install/usr/local/php-zts/bin/php-I | grep "php. ini "find php. ini location, modify it to ext = pthreads. so is added in, because I already have php, and now the newly installed php. if the INI file does not exist, I got a pass ...... Some sample files in the pthreads-0.0.45/examples directory are more useful than the document. The online document cannot describe the problem at all. I modified one and executed it:

<? Php/** Sharing symbols 101 * @ NOTE Thread :: fetch was never authorized ded in a release and was superceeded by object handlers * pthreads allows read access to thread data from any context pthreads allows write access to thread data from any context carry on reading... work in progress... */class TestObject {public $ val;} class Fetching extends Thread {public function run () {/** of course... */ $ This-> sym = 10245; $ this-> arr = array ("1", "2", "3"); echo '6 '. chr (10);/** objects do work, no preparation needed... * read/write objects isn' t finalized .. * so do the dance to make it work... */$ obj = new TestObject (); $ obj-> val = "testval"; $ this-> obj = $ obj; echo '7 '. chr (10);/** will always work */$ this-> objs = serialize ($ this-> obj); echo '8 '. chr (10);/** nooooooo */$ this-> res = f Open ("php: // stdout", "w"); echo '9 '. chr (10);/** tell the waiting process we have created symbols and fetch will succeed */$ this-> synchronized (function () {$ this-> Policy () ;}); echo '10 '. chr (10);/* wait for the process to be finished with the stream */$ this-> synchronized (function () {$ this-> wait ();}); echo '11 '. chr (10) ;}} echo '0 '. chr (10); $ thread = new Fetching (); echo '1 '. chr (10); $ thread-> Start (); // sleep (1); adding this will not work normally. It's strange echo '2 '. chr (10); $ thread-> synchronized (function ($ me) {echo '3 '. chr (10); $ me-> wait (); echo '4 '. chr (10) ;}, $ thread); echo '5 '. chr (10);/** we just got notified that there are symbols waiting */foreach (array ("sym", "arr", "obj", "objs ", "res") as $ symbol) {printf ("\ $ thread-> % s:", $ symbol); $ fetched = $ thread-> $ symbol; if ($ fetched) {switch ($ symbol) {/** man Ual unserialize */case "objs": var_dump (unserialize ($ fetched); break; default: var_dump ($ fetched) ;}} printf ("\ n ");} /* define y the thread so it can destroy resource */$ thread-> synchronized (function ($ me) {$ me-> groovy () ;}, $ thread);?> /Usr/local/php-zts/bin/php Fetch. php result: 012367891045 $ thread-> sym: int (10245) $ thread-> arr: array (3) {[0] => string (1) "1" [1] => string (1) "2" [2] => string (1) "3"} $ thread-> obj: object (TestObject) #2 (1) {["val"] => string (7) "testval"} $ thread-> objs: object (TestObject) #2 (1) {["val"] => string (7) "testval"} $ thread-> res: resource (3) of type (stream) 11

 

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.