3. add extension php. add extensionpthreads to ini. so; if you have installed php before, then usrlocalphp-ztsbinphp-I | grepphp. the ini statement helps you find php. ini location. Find the location of php. ini and modify it to add extpthreads. so, because I already have php, and now the newly installed php
3. add extension php. ini added: extension = pthreads. so; if you have installed php before,/usr/local/php-zts/bin/php-I | grep php. the ini statement helps you find php. ini location. Find the location of php. ini and modify it to add ext = pthreads. so, because I already have php, and now the newly installed php
3. Add Extension
Php. ini added: extension = pthreads. so;
If you have installed php before, use the/usr/local/php-zts/bin/php-I | grep "php. ini" statement to locate 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 ......
4. Check whether the extension is successfully installed.
/Usr/local/php5.5.12-zts/bin/php-I | grep-I pthreads
Test code:
/*
* Sharing symbols 101
* @NOTE Thread::fetch was never included 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 =
fopen
(
"php://stdout"
,
"w"
);
echo
'9'
.
chr
(10);
/*
* tell the waiting process we have created symbols and fetch will succeed
*/
$this
->synchronized(
function
(){
$this
->notify();
});
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); it's strange that you cannot work normally after adding this.
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
){
/*
* manual unserialize
*/
case
"objs"
:
var_dump(unserialize(
$fetched
));
break
;
default
: var_dump(
$fetched
);
}
}
printf(
"\n"
);
}
/* notify the thread so it can destroy resource */
$thread
->synchronized(
function
(
$me
){
$me
->notify();
},
$thread
);
?>
Enter/usr/local/php-zts/bin/php Fetch. php In the command box.
The PHP script must be called to run if no output is provided directly on the webpage.
Reference:
Http://www.2cto.com/kf/201309/245093.html
Http://blog.csdn.net/crz03128/article/details/25954441
After compilation for a long time, make a record.