1.Linux下php-cgi占内存100%电脑变的很卡的解决方法
2.Linux-C编程 / 进程通信 / 以文件读写的方式和进程通讯之popen()
3.Linux下的C语言程序编写及CGI脚本开发linuxccgi
Linux下php-cgi占内存100%电脑变的很卡的解决方法
Linux系统在使用的时候,电脑变的很卡,发现是php-cgi进程在占用cpu,占用率既然达到了%,究竟是什么原因导致这种情况的呢?下面小编就给大家介绍下Linux系统php-cgi占用cpu百分百的解决方法。
网站日志目录/home/hosts_log
日志文件有对应的改装网源码网站id
php-cgi日志目录 /usr/local/php_fcgi/logs
php-fpm.log
slow.log
查看日志文件基本上就可以解决问题了,网站被入侵上传了一个php ddos文件,当然如果不是此问题可以如下查看是不是程序问题有时使用file_get_contents函数也可能导致cpu %。
在php.ini 中,有一个参数 max_execution_time 可以设置PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm)中,日历组件源码在哪该参数不会起效。真正能够控制PHP 脚本最大执行时间的是php-fpm.conf 配置文件中的以下参数:
The timeout (in seconds) for serving a single request after which the worker process will be terminated
Should be used when ‘max_execution_time’ ini option does not stop script execution for some reason
‘0s’ means ‘off’
《value name=“request_terminate_timeout”》0s《/value》
默认值为0秒,也就是说,PHP 脚本会一直执行下去。这样,当所有的php-cgi 进程都卡在file_get_contents()函数时,这台Nginx+PHP 的WebServer已经无法再处理新的PHP 请求了,Nginx 将给用户返回“ Bad Gateway”。修改该参数,设置一个PHP 脚本最大执行时间是必要的,但是任宝源码网,治标不治本。例如改成《value name=“request_terminate_timeout”》s《/value》,如果发生file_get_contents()获取网页内容较慢的情况,这就意味着 个php-cgi 进程,每秒钟只能处理 5 个请求,WebServer同样很难避免“ Bad Gateway”。
要做到彻底解决,只能改掉直接使用file_get_contents的习惯,而是稍微修改一下,加个超时时间,用以下方式来实现 HTTP GET 请求。起飞页模板源码要是觉得麻烦,可以自行将以下代码封装成一个函数。
《?php
$ctx = stream_context_create(array(
‘.net/”, 0, $ctx);
》当然如果像dedecms生成html页面时cpu也会%的情况。
Linux下php-cgi进程占用cpu百分百的解决方法就介绍到这里了,还有一种可能是中毒导致的,这就需要杀毒处理了。
Linux-C编程 / 进程通信 / 以文件读写的方式和进程通讯之popen()
哈喽,勤劳的老吴又来分享学习心得啦~
嘿嘿,今天你编码了吗?快速上手popen()
该函数用于运行指定命令,测试本地源码工具并且使新启动的程序看起来像文件一样可被读写。
2个demo
1) 从外部程序中读数据:
运行效果:
2) 写数据到外部程序:
运行效果:
相关要点函数原型
popen() 会先执行fork,然后调用 exec 执行 command,并返回一个标准I/O文件指针。
type = "r":
type = "w":
优缺点
优点:
缺点:
内部实现
popen() 的内部实现思路如下:
初步的代码实现:
这里的实现有一些不足的地方,例如:
更完善的实现可以参考:
android.googlesource.com...
应用案例
以开源软件 MJPG-steamer 为例。
MJPG-streamer 是什么?
简单地说,就是一个开源的流媒体服务器:
github.com/jacksonliam/...
通过 mjpg-streamer,你可以通过 PC 浏览器访问到板子上的摄像头图像。
MJPG-streamer 就是通过 popen() 来支持 CGI 功能的:
CGI 是早期出现的一种简单、流行的服务端应用程序执行接口,http server 通过运行 CGI 程序来完成更复杂的处理工作,在 MJPG-streamer 的里的相关代码如下:
这里只是简单地了解一下 MJPG-Streamer,有兴趣的小伙伴们自行阅读更多的代码吧。
相关参考思考技术,也思考人生
要学习技术,更要学习如何生活。
你和我各有一个苹果,如果我们交换苹果的话,我们还是只有一个苹果。但当你和我各有一个想法,我们交换想法的话,我们就都有两个想法了。
对嵌入式系统 (Linux、RTOS、OpenWrt、Android) 和 开源软件 感兴趣,关注公众号:嵌入式Hacker。
觉得文章对你有价值,还请多多转发。
Linux下的C语言程序编写及CGI脚本开发linuxccgi
Linux下的C语言程序编写及CGI脚本开发
随着Linux操作系统的不断普及,许多用户开始学习如何在Linux下利用C语言编写程序及开发CGI脚本。C语言是一种简单,实用而又能够提高计算机性能的高级编程语言,可以用于开发复杂的程序,是一种经过精心设计的开发语言,可以满足从应用程序的小一点到大一点的各种需求。
在Linux系统中,程序员可以通过使用GNU GUI和GNU Emacs IDE编辑器等相关工具,来完成C语言代码的编写。而使用C语言编写程序过程中,可以通过运行命令来验证程序,方便快捷,可以快速实现程序调试。
此外,在Linux下,程序员还可以开发CGI脚本,用于开发web程序。CGI脚本是一种用来访问服务器上的资源的可执行文件,它可以运行一些有助于增强网页的动态服务程序,包括访客的登录确认,表单处理以及产生图形等,它可以与主流的web服务器,比如Apache一起使用。
下面是一个在Linux下使用C语言编写CGI脚本的简单例子:
#include
#include
int main(){
printf(“Content-type:text/html\r\n\r\n”);
printf(“”);
printf(““);
printf(“”);
printf(“
This is a CGI program written in C.
“);
printf(“”);
return 0;
}
从上述的代码可以看出,Linux下的C语言程序编写及CGI脚本开发非常容易,一个简单的程序,只需要几行C语言代码就可以实现,无需太多的繁琐的配置。此外,GNU Emacs IDE编辑器还可以帮助用户更加快速、简易的完成C语言程序编写及CGI脚本开发,从而让C语言在Linux环境中更加受到欢迎。