phpÓÐÒ»×é½ø³Ì¿ØÖƺ¯Êý£¬Ê¹µÃphpÄÜÔÚ*nixϵͳÖÐʵÏÖ¸úcÒ»ÑùµÄ´´½¨×Ó½ø³Ì¡¢Ê¹ÓÃexecº¯ÊýÖ´ÐгÌÐò¡¢´¦ÀíÐźŵȹ¦ÄÜ¡£
ÒýÓÃ
Process Control support in PHP implements the Unix style of process creation, program execution, signal handling and process termination. Process Control should not be enabled within a web server environment and unexpected results may happen if any Process Control functions are used within a web server environment.
½÷ÒԴ˾äÏ׸ø³¬¹¤£¬ÔÚweb server»·¾³Öв»ÒªÊ¹ÓÃÕâ×麯Êý£¬ÒòΪ»áµ¼Ö²»¿ÉÔ¤ÁϵĽá¹û¡£Áí£¬windows×÷Ϊ·ÇÀàunixϵͳ£¬Ã»ÓÐÕâЩº¯Êý¡£
PCNTLʹÓÃticksÀ´×÷ΪÐźŴ¦Àí»úÖÆ£¨signal handle callback mechanism£©£¬¿ÉÒÔ×îС³Ì¶ÈµØ½µµÍ´¦ÀíÒ첽ʼþʱµÄ¸ºÔØ¡£ºÎνticks£¿Tick ÊÇÒ»¸öÔÚ´úÂë¶ÎÖнâÊÍÆ÷ÿִÐÐ N ÌõµÍ¼¶Óï¾ä¾Í»á·¢ÉúµÄʼþ£¬Õâ¸ö´úÂë¶ÎÐèҪͨ¹ýdeclareÀ´Ö¸¶¨¡£
PCNTLµÄº¯Êý¶¼ÓÐÕâôЩ£º
ÐźŴ¦Àí
int pcntl_alarm ( int $seconds )
ÉèÖÃÒ»¸ö$secondsÃëºó·¢ËÍSIGALRMÐźŵļÆÊýÆ÷
bool pcntl_signal ( int $signo , callback $handler [, bool $restart_syscalls ] )
Ϊ$signoÉèÖÃÒ»¸ö´¦Àí¸ÃÐźŵ ......
»ù±¾Ë¼Â·£ºÍ¨¹ýSOCKETÇëÇóÆäËûPHP½Å²½£¬ÊµÏÖPHPµÄ¶à½ø³ÌµÄÒì²½Ö´ÐС£
·Ï»°¾Í²»¶à˵ÁË£¬Çë¿´ÏÂÃæµÄ½Å²½²¢Ö´ÐÐÖ®¡£
<?php
//a.php
function runThread(){
$fp = fsockopen('127.0.0.1', 82, $errno, $errmsg);
fputs($fp, "GET /a.php?act=b\r\n"); //ÕâÀïµÄµÚ¶þ¸ö²ÎÊýÊÇHTTPÐÒéÖй涨µÄÇëÇóÍ·
//²»Ã÷°×µÄÇë¿´RFCÖе͍Òå
fclose($fp);
}
function a(){
$fp = fopen('result_a.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n");
fclose($fp);
}
function b(){
$fp = fopen('result_b.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n");
fclose($fp);
}
if(!isset($_GET['act'])) $_GET['act'] = 'a';
if($_GET['act'] == 'a')
{
runThread();
a();
echo 'ok';
}
else if($_GET['act'] == 'b') {
b();
}
?>
ͨ¹ý¹Û²ìresult_a.logÓëresult_b.log£º
result_a.log: Set in 03:45:560.293005
result_b.log: Set in 03:45:560.296877
ÎÒÃÇ·¢ÏÖ,ÏÈдÁËresult_a.logÎļþºóдÁËresult_b.log£¬Õâ˵Ã÷Á½¸ö½ø³ÌÊÇÒì²½Ö´Ðеġ£ ......
ʹÓÃpopen½áºÏSHELLÃüÁîÒ²¿ÉÒÔʵÏÖ¶à½ø³Ì²¢·¢±à³Ì¡£
ʵÀýÈçÏ£º
<?php
//b.phpÎļþ
$file = 'testdir/file.txt';
for ($i=0;$i<10;$i++){
$fp = fopen($file,'a+');
fputs($fp, $i.'\r\n');
fclose($fp);
sleep(1);
}
?>
<?php
//p.php
echo 'start curl<br>';
$out = popen("/usr/local/php5/bin/php /var/htdocs/b.php &", "r");
pclose($out);
echo 'end curl<br>';
?>
ÔËÐÐp.php£¬¼´¿ÉʵÏÖPHP¶à½ø³ÌÒì²½±à³Ì¡£ ......
ÕâÆªÎÄÕ½éÉÜÒ»ÏÂÉè¼ÆÄ£Ê½ÖеĹ۲ìÕßģʽ¡£ ¹Û²ìÕßģʽӦÓõ½phpÃæÏò¶ÔÏó±à³ÌÖУ¬¿ÉÒÔ±ÜÃâ×é¼þÖ®¼ä½ôÃÜñîºÏ¡£ÁíÍâµÄ¹ØÓÚÈçºÎ±ÜÃâ×é¼þÖ®¼ä»úÃÜñîºÏµÄ·½·¨£¬¿ÉÒԲο¼phpÃæÏò¶ÔÏó±à³Ì – ʹÓýӿÚʵÏÖËÉÉ¢ñîºÏÕâÆªÎÄÕ¡£
¹Û²ìÕßģʽ·Ç³£¼òµ¥£ºÒ»¸ö¶ÔÏóͨ¹ýÌí¼ÓÒ»¸ö·½·¨£¨¸Ã·½·¨ÔÊÐíÁíÒ»¸ö¶ÔÏ󣬼´¹Û²ìÕß ×¢²á×Ô¼º£©Ê¹±¾Éí±äµÃ¿É¹Û²ì¡£µ±¿É¹Û²ìµÄ¶ÔÏó¸ü¸Äʱ£¬Ëü»á½«ÏûÏ¢·¢Ë͵½ÒÑ×¢²áµÄ¹Û²ìÕß¡£ÕâЩ¹Û²ìÕßʹÓøÃÐÅÏ¢Ö´ÐеIJÙ×÷Óë¿É¹Û²ìµÄ¶ÔÏóÎ޹ء£½á¹ûÊǶÔÏó¿ÉÒÔÏ໥¶Ô»°£¬¶ø²»±ØÁ˽âÔÒò¡£
Ò»¸ö¼òµ¥Ê¾ÀýÊÇϵͳÖеÄÓû§ÁÐ±í¡£ÏÂÃæµÄ´úÂëÏÔʾһ¸öÓû§ÁÐ±í£¬Ìí¼ÓÓû§Ê±£¬Ëü½«·¢ËͳöÒ»ÌõÏûÏ¢¡£Ìí¼ÓÓû§Ê±£¬Í¨¹ý·¢ËÍÏûÏ¢µÄÈÕÖ¾¹Û²ìÕß¿ÉÒÔ¹Û²ì´ËÁÐ±í¡£
01
<?php
02
interface IObserver
03
{
04
function onChanged( $sender, $args );
05
}
06
07
interface IObservable
08
{
09
function addObserver( $observer );
10
}
11
12
class UserList implements IObservable
13
{
14
private $_observers = array();
15
16
public function addCustomer( $name )
17
......
package com.softeem.jbs.lesson4;
import java.util.Random;
/**
* ÅÅÐò²âÊÔÀà
* ÅÅÐòËã·¨µÄ·ÖÀàÈçÏ£º
* 1.²åÈëÅÅÐò£¨Ö±½Ó²åÈëÅÅÐò¡¢ÕÛ°ë²åÈëÅÅÐò¡¢Ï£¶ûÅÅÐò£©£»
* 2.½»»»ÅÅÐò£¨Ã°ÅÝÅÝÅÅÐò¡¢¿ìËÙÅÅÐò£©£»
* 3.Ñ¡ÔñÅÅÐò£¨Ö±½ÓÑ¡ÔñÅÅÐò¡¢¶ÑÅÅÐò£©£»
* 4.¹é²¢ÅÅÐò£»
* 5.»ùÊýÅÅÐò¡£
*
* ¹ØÓÚÅÅÐò·½·¨µÄÑ¡Ôñ£º
* (1)Èôn½ÏС(Èçn≤50)£¬¿É²ÉÓÃÖ±½Ó²åÈë»òÖ±½ÓÑ¡ÔñÅÅÐò¡£
* ¡¡µ±¼Ç¼¹æÄ£½ÏСʱ£¬Ö±½Ó²åÈëÅÅÐò½ÏºÃ£»·ñÔòÒòΪֱ½ÓÑ¡ÔñÒÆ¶¯µÄ¼Ç¼ÊýÉÙÓÚÖ±½Ó²åÈË£¬Ó¦Ñ¡Ö±½ÓÑ¡ÔñÅÅÐòΪÒË¡£
* (2)ÈôÎļþ³õʼ״̬»ù±¾ÓÐÐò(Ö¸ÕýÐò)£¬ÔòӦѡÓÃÖ±½Ó²åÈË¡¢Ã°ÅÝ»òËæ»úµÄ¿ìËÙÅÅÐòΪÒË£»
* (3)Èôn½Ï´ó£¬ÔòÓ¦²ÉÓÃʱ¼ä¸´ÔÓ¶ÈΪO(nlgn)µÄÅÅÐò·½·¨£º¿ìËÙÅÅÐò¡¢¶ÑÅÅÐò»ò¹é²¢ÅÅÐò¡£
*
*/
public class SortTest {
/**
* ³õʼ»¯²âÊÔÊý×éµÄ·½·¨
* @return Ò»¸ö³õʼ»¯ºÃµÄÊý×é
*/
public int[] createArray() {
Random random = new Random();
......
Publication and Escape ·¢²¼Ò»¸ö¶ÔÏóÒâζ×ÅÄܹ»´ÓËüÄܹ»´ÓËüµ±Ç°·¶Î§Ö®Íâ±»·ÃÎʵ½¡£±ÈÈ磬±£´æ¿ÉÒÔ±»ÆäËû´úÂëÕÒµ½µÄÕâ¸ö¶ÔÏóµÄÒ»¸öÒýÓ㬻òÕß½«Æä×÷Ϊһ¸ö·Ç˽Óз½·¨µÄ·µ»ØÖµ£¬»òÕß½«Æä×÷Ϊ²ÎÊý´«µÝ¸øÆäËüµÄÀà¡£ public static Set<Secret> knownSecrets;
public void initialize() {
knownSecrets = new HashSet<Secret>();
}
Õâ¸öknownSecrets¾Í±»·¢²¼ÁË£¬²¢ÇÒ£¬knownSecretsÀïÃæÌí¼ÓµÄËùÓÐsecretÒ²¶¼±»·¢²¼³öÈ¥ÁË¡£
class UnsafeStates {
private String[] states = new String[] {
"AK", "AL" ...
};
public String[] getStates() { return states; }
}
Õâ¸östates¾Í±»·¢²¼ÁË£¬¶øÇÒ´øÀ´µÄÎÊÌâÊÇÈκε÷ÓÃÕß¶¼Äܹ»ÐÞ¸ÄÀïÃæµÄÄÚÈÝ£¬ÕâÑù£¬ºÜ²»°²È«¡£
public class ThisEscape {
public ThisEscape(EventSource source) {
source.registerListener(
new EventListener() {
public void onEvent(Event e) {
doSomething(e);
}
});
}
}
¿´Ã÷°×Õâ¸öThisEscapeΪʲô±»·¢²¼ÁËô£¿ÒòΪËü·¢²¼ÁËEv ......