PHP多进程协作编程之 socket
基本思路:通过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,这说明两个进程是异步执行的。
相关文档:
用PHP实现进度条效果。
<?php
set_time_limit(0);
echo '<h2>正在安装,请稍后...</h2>',
'<div style="border:1px solid #000;width:500px;"><div id="progress_bar">loading...</div></div>';
for($i=1;$i<=100;$i++){
$width = '500';
......
当下载文件需要与服务端交互时,就需要用脚本来实现,而不是单纯地链接到文件的地址
下载mp3文件的例子
<?php
$file_path = './data/upload/song/sample.mp3';
$file_name = 'sample.mp3';
$file_size = filesize($file_path);
header ( "Pragma: public" );
header ( "Cache-Control: must-reval ......
copy F:\php\php5ts.dll F:\Apache2.2\bin\
copy F:\php\libmysql.dll F:\Apache2.2\bin\
copy F:\php\php.ini-recommended F:\php\php.ini
httpd:
LoadModule php5_module "F:\php\php5apache2_2.dll"
PHPIniDir "F:\php\php.ini"
AddType application/x-httpd-php .php
php.ini:
short_open_tag = Off 改成 sho ......
Linux + Apache2.0 + Mysql + PHP + phpBB3.0
1.安包:
Apache2.0
#tar -zxf httpd-***.tar.gz -C /usr/local/src/
#cd /usr/local/src/httpd-***
  ......
转载的PHP面试题
1. 基本知识点
HTTP协议中几个状态码的含义:503 500 401 200 301 302。。。
Include require include_once require_once 的区别.
PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改进等等。
HEREDOC介绍
写出一些php魔幻方法;
一些编译php时的configure 参数
向php传入 ......