1、定时执行
就crontab了,linux命令,具体怎么用,自己google。只想说一点,crontab的时候需要注意权限,运维经常会用root来启动,导致有些文件web用户无权限。
2、后台守护
分两步:1需要在脚本中写死循环,因为php不像python,我一般是 do {....} while (true); 不过循环体里面一般要加个sleep的,不然机器会被跑死;2启动进程的时候需要在后面加个“&” ,这个大家也google吧,如果需要记录输出的信息需要这样写 php xxxx.php > /tmp/phplog &,这样程序的信息就记录到文件里了,方便以后排除问题。
3、运行监控
后台守护的进程启动了,但是你无法100%肯定你的程序不会出现警告信息,一旦出现这些信息,php会终止掉当前的进程,这个时候后台的程序就直接退出了。所以除了正常处理事情的程序外,还需要一个检查那个程序运行状态的程序,我一般会叫xxxxDefend.php,这个程序示例如下
#!/usr/local/php5/bin/php
<?php
//启动的命令
$action = '/usr/local/php5/bin/php xxxxxx.php';
$logPath = '/tmp/logs/';
do {
$result = array();
exec("ps aux | grep 'xxxxxx.php'", $result);
$isOk = 0;
foreach ($result as $v) {
$is = strpos($v, $action);
if (false !== $is) {
$isOk++;
}
}
$exec = $action . " > " . $logPath . "xxxxxx_log &";
for ($i=1;$i<=(5-$isOk);$i++) {
exec($exec);
}
sleep(5);
} while (true);
把这个程序也在后台启动起来,它就会每隔5秒用ps命令检查下工作的程序是否存在,不在或者不足5个的时候,就启动到5个。当然这个工作也可以交给运维用shell来做,不过当运维能力不足的时候就得自己来了。
4、多进程
工作的php为了增加效率,一般情况下会同时启动多个,甚至是运行在多台机器上。这个时候就要考虑到多进程同时处理同一个数据的问题。这个时候一般我会吧任务做一个队列(一般用redis,这个性能蛮不错的,怎么做,大家还是google吧),然后工作程序每次pop出一条要工作的记录,比如你有一个很大的文件要处理,这个时候我一般把文件处理好,一条一条的放到redis的list里,这样工作的程序就可以多个程序一起pop,并行执行,而且不会重复。如果实在没有redis,可以用mysql做,建个innodb的表,程序处理的之前务必在要处理的数据上加个读锁,然后处理之后加标记,或者直接删掉那条数据,这样也可以实现多进程不重复的问题。
5、日志
后台的程序一般会一直跑的,基本上不出事没人会理它,所以日志异常重要,因为一旦出事了,需要靠日志来找原因的,不像前台的程序可以echo看看错在哪里。日志不要怕记的多,不要怕浪费空间,硬盘不值钱的,但是一个bug可能会直接影响你的收入。我一般这样记日志
[机器ip] [进程pid] [时间] [当前程序文件名] [文件行数] [必要的参数和信息] [其他]
这些是正常的程序中能想到的问题,一般还会在程序的最外层加个try catch,这样能够捕获大部分的异常,然后也记录下来(警告catch不到,挺郁闷的)
6、性能优化
像这种后台的程序,一般运维都会单独给机器,这个时候需要做下压力测试,看看机器究竟能跑几个进程,这个一般在处理程序狂处理任务的时候看看机器的cpu,内存,网络,以及硬盘的使用情况,最好是这些同时达到最大值,这样你的这台机器就不浪费了,如果硬盘使用率很高,其他的很低,就要优化程序,这个情况一般是吧读取和写入的数据在内存中暂存一段时间,然后一次性写入硬盘;如果cpu狂高,那就是你的算法太搓了,优化优化吧;内存和网络一般不会成为瓶颈,php用不了多少内存,服务器至少也得是个千兆的网卡吧,这两项一般不会是瓶颈。所以这些机器我一般会再开个memcache,哈哈,不浪费。
7、题外话
一个关于服务器close_wait的问题。php的程序员一般都不太严谨,很少有人开了链接之后会主动关闭连接的,比如连数据库,连memcache,很多程序员都是建链接,操作,然后程序执行完成。如果php不主动关闭连接,会导致对方的机器一直会等待这边的关闭操作,在对方服务器上看到的就是一个close_wait状态,而一台机器能开的链接也就那么6万多个,尤其是后台的程序跑起来之后,对方的机器很快就被占满了,然后连不上。这个时候2边都需要做些修改,一方面php要主动断开连接,另一方面对方的机器,需要吧close_wait的默认超时时间改短一点(怎么改?自己google去),我一般memcache的只有5秒,数据库的长点,也就2分钟。这样处理之后,服务器的持续性就大大增加了,并发能力也会提高。
分享到:
相关推荐
本文将详细介绍如何通过微信小程序和PHP后端来获取OpenID,并对提供的源代码进行解析。 1. **OpenID的获取流程** - 用户首次打开微信小程序,微信服务器会向小程序服务器发送一个code。 - 小程序通过code向微信...
总结来说,这个"小程序电商系统 前端微信小程序 后端PHP"的架构,充分利用了微信小程序的用户触达能力和PHP的灵活性,为企业构建了一个完整的电商解决方案。无论是前端的用户体验设计,还是后端的业务流程处理,都...
微信小程序完整商城类demo——灵动云商,是一个包含PHP后端的电商解决方案,旨在为开发者提供一个快速构建线上商城的平台。这个项目不仅涵盖了微信小程序前端的开发,还包含了服务端的实现,使得用户能够通过微信小...
本文将详细讲解“新自助图文打印系统/证件照云打印微信小程序源码 PHP后端 附教程”这一项目,这是一套完整的自助打印解决方案,包括最新的2023年UI设计,微信小程序前端,以及PHP后端源码,并提供配套教程,方便...
《PHP后端驱动的微信小程序商城:打造无缝购物体验》 在当今的互联网时代,微信小程序因其无需下载、即用即走的特点,已经成为商家在线销售的重要渠道。本资源提供了一个基于PHP后端技术构建的微信小程序商城,为...
在本项目中,我们关注的是一个基于PHP实现的拼车小程序后端开发。这个压缩包包含的是一套完整的后端代码,用于支持一个拼车应用的后台服务。PHP是一种广泛使用的开源服务器端脚本语言,尤其适合Web开发,能够与各种...
该压缩包文件“小程序源码之私语:录音及播放(含PHP后端).zip”包含了一个小程序的完整源代码,特别关注于录音和播放功能,并且集成了PHP后端服务。这个项目可能是一个教学资源,适用于程序设计或课程设计的学习者...
【标题】:“同城拼车(PHP后端)小程序源码”是指一套基于PHP技术构建的用于实现城市内拼车服务的小程序后端代码。这个源码提供了实现拼车平台所需的基本功能,让开发者能够快速搭建一个方便用户发布和查找拼车信息的...
【微信小程序--报修系统(后端PHP)】 微信小程序是一种轻量级的应用开发平台,由腾讯公司推出,主要用于在微信内部提供便捷的服务。在这个项目中,“报修系统”是针对用户日常生活中设备或设施故障报修需求而设计...
PHP后端【小程序带后端】.rar" 这个标题揭示了我们正在处理一个与Web开发相关的项目,具体来说是涉及到PHP后端技术和微信小程序。"Shuttles"可能是一个项目名称或者功能模块的代称,暗示这个项目可能与交通、数据...
总结,微信小程序云商城php后端是一个集成了前端交互设计、后端业务处理、数据库管理、安全防护以及运维部署等多方面技术的综合项目。开发者需要具备微信小程序开发、PHP编程、数据库设计、网络安全和Web服务器配置...
这个压缩包包含三部分:实时巴士-小程序.rar、实时巴士前端.zip和实时巴士php后端.zip。 1. **小程序源码**: 微信小程序是一种轻量级的应用开发平台,无需安装即可使用,特别适合公共交通查询这种高频次、低停留...
2. **后端管理程序**:这是用于支持小程序运行的服务器端组件,处理用户的请求,与数据库交互,进行数据处理和业务逻辑运算。它可能基于常见的后端框架如Spring Boot、Django或Node.js的Express。 3. **源码**:...
php后端【小程序带后端】.rar"指的是一个包含完整前后端的小程序项目,其中后端使用PHP语言开发,主要用于实现语音日记本的功能。这个项目不仅提供了用户界面,还包含了处理数据和交互逻辑的服务器端代码。 【描述...
《语音日记本:PHP后端与微信小程序前端的整合应用》 在当今移动互联网时代,微信小程序因其无需安装、即用即走的特性,成为众多开发者和用户青睐的平台。本资源提供的是一个完整的“语音日记本”项目,涵盖了PHP...
PHP高可用高安全App后端开发指南 PHP 是一种广泛应用于 Web 开发的服务器端脚本语言,具有高效、灵活、跨平台等特点。随着移动互联网的普及,高可用高安全的 App 后端开发成为企业的迫切需求。以下是 PHP 开发高...
PHP是一种广泛应用于Web开发的开源脚本语言,尤其适合处理动态内容和交互式应用程序。在这个项目中,后端开发者负责设计、实现和维护游戏服务器,以确保玩家能够进行顺畅、公平的游戏体验。 【描述】:“可以学习”...
代驾小程序和后端共同开发的代驾平台源码.zip有能力的支持支持二开,直接下载也可运行。 代驾小程序和后端共同开发的代驾平台源码.zip有能力的支持支持二开,直接下载也可运行。代驾小程序和后端共同开发的代驾...
这是一个基于PHP后端技术开发的图书馆扫码借阅系统程序源码。这个系统旨在实现图书馆的自动化管理,方便读者快速借阅书籍,同时也简化了图书馆工作人员的工作流程。在深入理解这个系统的功能和工作原理之前,我们...
该压缩包文件“基于微信小程序医院预约挂号系统PHP后端接口源码.zip”提供了一个用于实现医院预约挂号功能的微信小程序后端接口的源代码。这个系统是开发人员的期末大作业或案例设计实践,旨在教授和展示如何利用PHP...