Apache的两种工作模式

查看Apache当前工作模式

# service httpd -l
Compiled in modules:
  core.c
  mod_authn_file.c
  mod_authn_default.c
  mod_authz_host.c
  mod_authz_groupfile.c
  mod_authz_user.c
  mod_authz_default.c
  mod_auth_basic.c
  mod_include.c
  mod_filter.c
  mod_log_config.c
  mod_env.c
  mod_mime_magic.c
  mod_headers.c
  mod_setenvif.c
  mod_version.c
  mod_proxy.c
  mod_proxy_connect.c
  mod_proxy_ftp.c
  mod_proxy_http.c
  mod_proxy_scgi.c
  mod_proxy_ajp.c
  mod_proxy_balancer.c
  mod_ssl.c
  prefork.c
  http_core.c
  mod_mime.c
  mod_status.c
  mod_autoindex.c
  mod_asis.c
  mod_suexec.c
  mod_cgi.c
  mod_negotiation.c
  mod_dir.c
  mod_actions.c
  mod_alias.c
  mod_rewrite.c
  mod_so.c

从以上结果可知,当时httpd工作在prefork模式下。

prefork模式
这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于 Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。
这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将 MaxClients 设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。

worker模式
此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。
控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数的 ThreadsPerChild 指令,和控制允许建立的总线程数的 MaxClients指令。

prefork和worker模式的切换
1.将当前的prefork模式启动文件改名

mv httpd httpd.prefork

2.将worker模式的启动文件改名

mv httpd.worker httpd

- 阅读剩余部分 -

ext3文件系统子目录个数限制

今天网站生成静态时一直提示"缓存文件写入失败" ,各种改权限,删文件等等。最终还是问题依旧。突然看到flashfxp 左边文件列表上显示的目录个数为31998,随手百度了一下,结果发现 ext3 文件系统限制子目录个数为31998个,ext4无限制!蛋疼啊。虽然有网友给出了将ext3无痛转换为ext4的方法,但是还是害怕文件丢失。这个实在伤不起。无奈只好修改生成方式了。特记录之,以后坚决不用蛋疼的ext3

参考资料:
http://en.wikipedia.org/wiki/Ext3

ffmpeg视频文件批量转换脚本

最近在制作mp4文件时,前后使用了魔影工厂、狸窝、格式工厂进行转码,但是发现转换过的视频经常有黑屏的现象,文件体积也比较大,自由度也比较低。最终发现了 ffmpeg 很好很强大,不但处理速度快,可自定义参数,处理过的视频体积小的很多,而且还很清晰。唯一美中不足的是这个软件的转换需要在命令行模式下完成。一个一个的复制、粘贴到cmd窗口,文件多了就吃不消了,这时人的惰性发挥了作用,于是就有了批量转换脚本,简单的一句话,几百个视频文件就哗啦哗啦的出来了。以 flv 到 mp4 文件为例:

for %%a in (*.flv) do ffmpeg.exe -threads 4 -i %%~na.flv -ab 32 -ar 22050 -vcodec libx264 -qscale 6 -r 25 -s 720x480 -flags +loop -crf 24 -bt 256k -vol 200 -keyint_min 6 -vf yadif %%~na.mp4

注意:文件名中如果有空格,需要加引号

常用参数:

-threads 指定用于编码的线程
-i 指定输入文件
-ab 设置音频码率
-ar 设置音频采样率
-vcodec 视频流编码方式
-qscale 使用固定的视频量化标度(VBR)
-r 视频流帧数(一般说来PAL制式通常用25,NTSC制式通常用29)
-s 视频分辨率
-flags 环路滤波器 (-loop禁用 +loop 启用)
-crf 恒定质量模式(也称为恒定ratefactor)
-bt 设置比特率容许的误差
-keyint_min 设置关键帧的间隔
-vol 设定音量
-vf 指定滤镜 (等同 -filter:v)

Nginx搭建flv mp4流媒体服务器

环境:Centos 8.0 64bit

一、安装依赖包

1.安装gcc-c++

yum -y install gcc-c++

2.安装zlib

wget http://zlib.net/zlib-1.2.11.tar.gz
tar xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install

3.安装pcre

wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
tar zxvf pcre-8.43.tar.gz
cd pcre-8.43
./configure --prefix=/usr/local/pcre
make && make install

4.安装 openssl openssl-devel

yum install perl perl-devel
yum install openssl openssl-devel

5.下载mp4支持模块备用

wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
tar zxvf nginx_mod_h264_streaming-2.2.7.tar.gz
vi nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c

- 阅读剩余部分 -

飞飞影视系统2.x整合jwplayer

编辑 /Lib/Conf/config.php 文件,找到

'play_player' =>array ( 

在最后一行插入:

'jwplayer'=> array('01','jwplayer')

然后在 /Public/player2.9 目录下新建 jwplayer.js 内容如下:

function $Showhtml(){
return '<iframe width="100%" height="'+Player.Height+'" src="/Public/player2.9/jwplayer.html" frameborder="0" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>';
}
Player.Show();
if(Player.Second){
$('buffer').style.height = Player.Height-28;
$("buffer").style.display = "block";
setTimeout("Player.BufferHide();",Player.Second*1000);
}

- 阅读剩余部分 -