‘壹’ 如何让您的php也支持pthreads多线程
一、下载pthreads扩展
二、安装pthreads扩展
复制php_pthreads.dll 到目录 bin\php\ext\ 下面。
复制pthreadVC2.dll 到目录 bin\php\ 下面。
复制pthreadVC2.dll 到目录 C:\windows\system32 下面。
打开php配置文件php.ini。在后面加上extension=php_pthreads.dll
提示!Windows系统需要将 pthreadVC2.dll 所在路径加入到 PATH 环境变量中。我的电脑--->鼠标右键--->属性--->高级--->环境变量--->系统变量--->找到名称为Path的--->编辑--->在变量值最后面加上pthreadVC2.dll的完整路径
比如C:\WINDOWS\system32\pthreadVC2.dll
‘贰’ php,问个关于视频的问题
这个很麻烦的!
首先要给php加一个组件
其中的一个方法是:
下载ffmpeg-php并解压到你电脑上一个硬盘分区内
然后复制里面的
avcodec-51.dll
avformat-51.dll
avutil-49.dll
php_ffmpeg.dll
pthreadGC2.dll
这个几个文件到php的ext目录或者windows\system32目录(这个看具体php环境是怎么搭配的,根据操作系统、php版本、apache版本、搭配方式等有所不同)
然后打开php.ini文件
把
extension=php_gd2.dll
extension=php_gettext.dll
前面的分号去掉,然后再增加一行
extension=php_ffmpeg.dll
保存,重启apache、iis或者干脆重启服务器
然后就可以写php代码对视频进行截图了
这是一中方法!
比较麻烦!
例外一种方法是,干脆在服务器上安装 ffmpeg软件,然后用php启用这个软件并发送命令
php本身就有这种函数,可以调用服务器上的任意可自行文件(exe)
只是,你要知道这些软件是命令格式
比如你安装ffmpeg软件后
用这条代码
exec(ffmpeg -i test.mp4 -y -f image2 -t 0.001 -s 352x240 a.jpg);
就能生成一张a.jpg的图!
总的来说,单单原原本本的php是做不到这些的!
只是他提供了某些接口,需要你自己去组建所需要功能的特定环境!
当然,上面的方法针对window系统,其他的操作系统,我没有研究过!
估计方法大同小异!
‘叁’ php是什么什么作用
PHP(HypertextPreprocessor)是一种通用开源脚本语言。PHP语法吸收了C语言、java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
1.PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。
2.PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,
PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
3.PHP支持几乎所有流行的数据库以及操作系统。
4.最重要的是PHP可以用C、C++进行程序的扩展!
PHP脚本主要用于以下三个领域:
(1)服务端脚本。这是PHP最传统,也是最主要的目标领域。开展这项工作需要具备以下三点:PHP解析器(CGI或者服务器模块)、web服务器和web浏览器。需要在运行web服务器时,安装并配置PHP,然后,可以用web浏览器来访问PHP程序的输出,即浏览服务端的PHP页面。如果只是实验PHP编程,所有的这些都可以运行在自己家里的电脑中。请查阅安装一章以获取更多信息。
(2)命令行脚本。可以编写一段PHP脚本,并且不需要任何服务器或者浏览器来运行它。通过这种方式,仅仅只需要PHP解析器来执行。这种用法对于依赖cron(Unix或者linux环境)或者TaskScheler(Windows环境)的日常运行的脚本来说是理想的选择。这些脚本也可以用来处理简单的文本。请参阅PHP的命令行模式以获取更多信息。
编写桌面应用程序。对于有着图形界面的桌面应用程序来说,PHP或许不是一种最好的语言,但是如果用户非常精通PHP,并且希望在客户端应用程序中使用PHP的一些高级特性,可以利用PHP-GTK来编写这些程序。用这种方法,还可以编写跨平台的应用程序。PHP-GTK是PHP的一个扩展,在通常发布的PHP包中并不包含它。
(3)PHP能够用在所有的主流操作系统上,包括Linux、Unix的各种变种(包括HP-UX、Solaris和OpenBSD)、microsoftWindows、MacOSX、RISCOS等。今天,PHP已经支持了大多数的web服务器,包括Apache、(IIS)、PersonalwebServer(PWS)、Netscape以及iPlantserver、OreillyWebsiteProServer、Caudium、Xitami、OmniHTTPd等。对于大多数的服务器,PHP提供了一个模块;还有一些PHP支持CGI标准,使得PHP能够作为CGI处理器来工作。
插件丰富,网上的解决方案有很多,而且还有庞大的开源社区可以提供帮助。
跨平台性强效率高图像处理
面向对象
[在php4,php5中,面向对象方面都有了很大的改进,php完全可以用来开发大型商业程序。]
PHP性能很强.配合简单、稳定、容易部署,总的来说php能帮你低成本完成事情
1)函数命名不规范驼峰法和下滑线,传参位置不一你知道的
2)单线程;PHP本身,一直以来php就是个单进程的程序;虽然php的pthreads扩展早就有了。但是它不够稳定,运行运行着就会莫名其妙的自己挂掉;php的扩展都是C写的,这也就意味着任何一个扩展出现线程竞争资源控制问题都能让整个挂掉
3)核心异步网络不支持(当然在linux只有同步非阻塞网络模型)。却少了这个使得很难开发一个能够承受大并发的网络应用。传统的网络模型和io都阻塞的。这样基本的编程的做法就是一个进程(或者线程)响应一个用户链接请求。因此无法完成像实时网游那样需要成千上万网络连接的任务。尽管php也有Libevent、eio扩展对此算是某种程度上面的弥补,但是感觉都不是那么完善
4)只支持web开发,不方便做.exe文件,不方便做桌面应用程序.不方便做手机程序.
5)不适合做爬虫、自动运行脚本.科学运算项目,这语言基本构架就不适合,虽然有很多方法实现。
6)后期维护困难。后期提速空间局限性较大。
今朝全球5000万互联网网站中,有60%以上使用着PHP手艺;
PHP也当选是全球五大最受接待的编程说话,而且是唯一当选的剧本说话;
国际80%以上的静态网站都在使用PHP开拓,网络、网易、新浪、搜狐、阿里巴巴、腾讯、金山等,都有PHP的影子;
AlexaTOP500中国网站排名,有394家使用了PHP手艺,比例为78.8%。(火爆不?)
以下是某支流搜索引擎在某时辰收录各WEB说话页面个数的斗劲:
Php:2,150,000,000
ASPX:1,370,000,000
Java:6,710,000,00
Asp:1,140,000,000
各类类型在搜索引擎的收录景象证实:可以或许开拓网站的说话良多,能做到精晓的只需一种;在Web手艺方面,PhP利用更遍及。
2015年6月份PHP新浪科技等诸多大媒体都在转载了“互联网十大抢手人材”,PHP排名后端说话第一位。据统计,PHP人材供求比抵达1:10,php高端人材特别稀缺。
PHP、C++、java这三种说话都是相当优良的剧本说话,为什么PHP能大行其道,位居榜首呢?
从概略下去看,这是就业景象使然。越来越多的新公司或新项目使用PHP,这使得PHP相关社区越来越活跃,而这又反过来影响到良多项目或公司的挑选,构成一个良性的轮回。就我们今朝体味到的景象,PHP是国际大部门web项手段首选,而且有良多公司从其它说话(如ASP,JAVA)转到了PHP。适合的就是最好的,PHP的快速,开拓成本低,周期短,前期保护费用低,开源产物丰盛,这些都是另外两种说话没法对照的。
以上各种消息都在给我们传送一种旌旗灯号:PHP手艺今朝很给力。
薪资也是反映PHP手艺是不是给力的一个很首要的身分,PHP是不是很有前景,看中立网站职友集显现的薪资即可!
总之,在全球前一百万的网站中,大约有70%的站点使用PHP开拓,PHP的用武之地不只仅只是在网站开拓,在游戏开拓、广告系统开拓、API接口开拓、移动端后台开拓,内部OA系统开拓上都能使用PHP。所以不管是斟酌开拓周期,仍是合计开拓成本,PHP都是值得优先斟酌的。不管另外说话若何兴衰,但企业会一向需求PHP。
‘肆’ 怎样在windows下配置ffmpeg-php
首先介绍下我使用的集成环境wamp。
PHP: php5.2.6
Apache: apache2.2.8
1.下载ffmpeg-php
2. 解压ffmpeg-php-win32-all.zip 后有下面几个文件:
avcodec-51.dll
avformat-51.dll
avutil-49.dll
php_ffmpeg.dll
pthreadGC2.dll
3. 将四个文件拷贝到windows\system32文件夹下面(小插曲:之前自己再配置时候按照网上的文章只拷贝两个文件 avcodec-51.dll, avformat-51.dll到这个文件,结果发现并不能配置成功。后来将后面avutil-49.dll, pthreadGC2.dll全部拷贝过去就成功了,很有可能这四个文件是有一定关联使用的。)
avcodec-51.dll, avformat-51.dll, avutil-49.dll, pthreadGC2.dll
4. 然后需要到apache\bin文件下找到php.ini文件下允许使用dll文件加入extension=php_ffmpeg.dll 并允许 extension=php_gd2.dll, extension=php_gettext.dll这两个
改动后如下(去掉前面的分号就代表允许执行)
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_ffmpeg.dll
5. 重新启动wamp后使用phpinfo()函数看到一下信息配置: //我两个环境一个apache一个IIS,iis不用重启就生效了,apache没试不知道, add by aboc
ffmpeg
ffmpeg-php version 0.5.2.1
libavcodec version Lavc51.43.0
libavformat version Lavf51.12.2
ffmpeg-php gd support enabled
以上就表明ffmpeg在php环境中配置成功了。
6. 下面我们建立一个php的页面来测试是不是可以使用ffmpeg的一些函数功能。建立testvideo.php文件
代码如下:
<?php
extension_loaded('ffmpeg'); //可不要
$ffmpegInstance = new ffmpeg_movie('C:\wamp\www\top10.mp4'); //这里要用绝对路径
echo "getDuration: " . $ffmpegInstance->getDuration()."<br>" .
"getFrameCount: " . $ffmpegInstance->getFrameCount()."<br>" .
"getFrameRate: " . $ffmpegInstance->getFrameRate()."<br>" .
"getFilename: " . $ffmpegInstance->getFilename()."<br>" .
"getComment: " . $ffmpegInstance->getComment()."<br>" .
"getTitle: " . $ffmpegInstance->getTitle()."<br>" .
"getAuthor: " . $ffmpegInstance->getAuthor()."<br>" .
"getCopyright: " . $ffmpegInstance->getCopyright()."<br>" .
"getArtist: " . $ffmpegInstance->getArtist()."<br>" .
"getGenre: " . $ffmpegInstance->getGenre()."<br>" .
"getTrackNumber: " . $ffmpegInstance->getTrackNumber()."<br>" .
"getYear: " . $ffmpegInstance->getYear()."<br>" .
"getFrameHeight: " . $ffmpegInstance->getFrameHeight()."<br>" .
"getFrameWidth: " . $ffmpegInstance->getFrameWidth()."<br>" .
"getPixelFormat: " . $ffmpegInstance->getPixelFormat()."<br>" .
"getBitRate: " . $ffmpegInstance->getBitRate()."<br>" .
"getVideoBitRate: " . $ffmpegInstance->getVideoBitRate()."<br>" .
"getAudioBitRate: " . $ffmpegInstance->getAudioBitRate()."<br>" .
"getAudioSampleRate: " . $ffmpegInstance->getAudioSampleRate()."<br>" .
"getVideoCodec: " . $ffmpegInstance->getVideoCodec()."<br>" .
"getAudioCodec: " . $ffmpegInstance->getAudioCodec()."<br>" .
"getAudioChannels: " . $ffmpegInstance->getAudioChannels()."<br>" .
"hasAudio: " . $ffmpegInstance->hasAudio();
?>
7.执行后如果拿到视频的一些信息如下就表示环境配置成功了,那我们就可以开始开发我们的视频转换了。
执行结果:
getDuration: 811.13336181641
getFrameCount: 12167
getFrameRate: 15
getFilename: C:\wamp\www\top10.mp4
getComment:
getTitle:
getAuthor:
getCopyright:
getArtist:
getGenre:
getTrackNumber: 0
getYear: 0
getFrameHeight: 240
getFrameWidth: 320
getPixelFormat: yuv420p
getBitRate: 269769
getVideoBitRate:
getAudioBitRate:
getAudioSampleRate: 48000
getVideoCodec: mpeg4
getAudioCodec: mpeg4aac
getAudioChannels: 2
hasAudio: 1
视频截图的话如下方法: //add by aboc
$ff_frame = $ffmpegInstance->getFrame(rand(1,$ffmpegInstance->getFrameCount())); //随机截取某一帧
$gd_image = $ff_frame->toGDImage();
imagejpeg($gd_image,'t.jpg');
imagedestroy($gd_image);
echo '<img src="t.jpg" />';
‘伍’ php有办法创建一个进程并且立即返回他的PID吗
linux 可以用 pcntl_fork 产生一个子进程并返回其pid~
php目前在 windows下很难做到多进程。
不过可以使用多线程,见pthreads,不过使用起来有点小复杂!
‘陆’ win7怎么安装php的pthreads 扩展
尝试如下操作: 1、 在php.ini中设置extension_dir 指向e:\php5.4\ext; 部分php扩展加载了 2、设置windows系统环境变量, phpext, 指向e:\php5.4\ext, PHPRC 指向e:\php5.4 设置path环境变量,添加e:\php5.4 3、重新启动apache
‘柒’ pthread.h可以在windows下用吗
Pthread是由POSIX提出的一套通用的线程库,在Linux平台下,它被广泛的支持,而windows平台下,却并不被支持,而pthreads-w32为我们提供了解决方案!
‘捌’ windows上php网站移植到Linux的问题
在linux下将你的网站权限设置成777
比如你将网站放到了/profile/web下
那么用chmod -R 777 /profile/web
如果你只想对某个目录有写权限,那么将网站整体设置权限为755后,再对某个目录,比如/profile/web/upload设置成为777即可
chmod -R 755 /profile/web
chmod -R 777 /profile/web/upload
‘玖’ 为什么win10不支持php pthreads pool类和worker对象
Windows 10 在Win8.1的基础上延续对 Miracast 的支持。即您可以无线传输音频和视频、无线镜像显示到大屏幕上。但是并不是所有安装windows 10 系统的笔记本或平板都支持Miracast功能。同样可以通过运行Dxdiag.exe 命令的方法来测试、验证是否支持?
Windows 10 Miracast 理论原则上支持。然而,驱动程序的作用也必须发挥。图形驱动程序必须支持英特尔 Miracast 工程驱动程序版本 10.18 WDDM 1.3。即Graphic Driver(显卡驱动版本)
支持 WDDM 1.3。另外,Wireless LAN Driver (无线网卡驱动版本)版本至少要求 Ndis 6.30版本。
检验搭载Windows 10 系统的电脑是否支持Miracast最好的办法就是将系统做个快速测试:
1、WIN + R 组合键开始“运行”程序;
2、在“运行”程序的输入框中输入“dxdiag.exe”,确定;
3、弹出DrectX诊断工具,选择“是”开始检测;
4、当检测进度条消失,表示检测完毕,“保存所有信息”到桌面;
5、打开保存的TXT文档,编辑—查找“Miracast”,若搜索到如下字眼表示不支持Miracast功能;
PS:Not Available表示不支持,Available, with HDCP表示支持
‘拾’ windows下php程序怎么运行
一,首先到PHP官网下载php(目前php有3个stable分支版本7.1、7.0、5.6,如果有项目需求就下载需求版本,如果是个人学习,建议下载最新版),根据32位/64位系统下载ZIP包即可,不需要Debug包,(下面我要说的是Nginx+PHP的方式,推荐使用Non Thread Safe版本):http://windows.php.net/download
二、到Nginx官网下载Nginx(个人学习建议Mainline版本,项目开发建议Stable版本),注意选择windows的包!:https://nginx.org/en/download.html
三、下载完上面的两个包后解压即可(建议放到不经常移动的地方)。
四、用纯文本编辑器打开Nginx里面conf文件夹里面的nginx.conf文件,进行如下编辑即可:
worker_processesauto;
events{
worker_connections1024;
}
http{
includemime.types;
default_typeapplication/octet-stream;
#access_log\.\nul;#关闭访问日志
sendfileon;
tcp_nopushon;
tcp_nodelayon;
keepalive_timeout65;
types_hash_max_size2048;
ssl_protocolsTLSv1.2TLSv1.1TLSv1;
ssl_prefer_server_cipherson;
gzipon;
server{
listen80default_server;
listen[::]:80default_server;
server_name_;
roothtml;#这里指定为你网站的根目录,比如C:html,默认是相对于Nginx目录下
indexindex.phpindex.html;
charsetutf-8;
location/{
try_files$uri$uri/=404;
}
location~.php${
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.cpp;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
includefastcgi_params;
try_files$fastcgi_script_name=404;
}
}
}
五、根据需要可以编辑php.ini。
六、创建快捷方式以便于启动php和Nginx:
桌面上右键-》新建-》快捷方式,位置选择到php文件夹下的php-cgi.exe文件,并加上参数:-b 127.0.0.1:9000。(比如PHP文件夹在C:php,位置就是"C:phpphp-cgi.exe -b 127.0.0.1:9000"),下一步名字随意,完成。
桌面上再右键-》新建-》快捷方式,位置选择到Nginx文件夹下的nginx.exe即可。可以没有参数。
再创建一个停止Nginx的快捷方式(PHP要停止直接在php的窗口按Ctrl+C即可):桌面上右键-》新建-》快捷方式,位置选择到Nginx文件夹下的nginx.exe,并加上参数:-s quit。(比如Nginx文件夹在C:Nginx,位置就是"C:Nginx ginx.exe -s quit")。
七、分别双击上面创建的两个快捷方式,启动php和Nginx(php会一直有一个黑框,不要关,Nginx是黑框一闪而过,任务管理器里可以看到多个Nginx进程)。
八、在上面配置文件里设置的网站根目录里创建一个php文件,内容为:
<?php
phpinfo();
九、打开浏览器访问“127.0.0.1”或者“[::1]”,如果正常显示PHP信息界面了就表示环境搭建成功了。
十、要关闭的话,php在那个黑框框按Ctrl+C即可,然后运行刚刚创建的那个Nginx退出的快捷方式即可关闭Nginx。
纯手打,望采纳!