`

php写后端运行程序总结

阅读更多

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会终止掉当前的进程,这个时候后台的程序就直接退出了用php写后端运行程序的心得 - minecz - minecz的学习博客。所以除了正常处理事情的程序外,还需要一个检查那个程序运行状态的程序,我一般会叫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分钟。这样处理之后,服务器的持续性就大大增加了,并发能力也会提高。

分享到:
评论

相关推荐

    微信小程序获取OpenID +php后端完整源代码

    本文将详细介绍如何通过微信小程序和PHP后端来获取OpenID,并对提供的源代码进行解析。 1. **OpenID的获取流程** - 用户首次打开微信小程序,微信服务器会向小程序服务器发送一个code。 - 小程序通过code向微信...

    小程序电商系统 前端微信小程序 后端php

    总结来说,这个"小程序电商系统 前端微信小程序 后端PHP"的架构,充分利用了微信小程序的用户触达能力和PHP的灵活性,为企业构建了一个完整的电商解决方案。无论是前端的用户体验设计,还是后端的业务流程处理,都...

    全新UI自助图文打印系统小程序源码 PHP后端 附教程

    全新UI自助图文打印系统小程序源码 PHP后端 附教程 后端安装说明: 测试环境:Nginx+PHP7.4+MySQL5.6 PHP安装扩展:sg11 网站运行目录设置为:/public 网站伪静态规则设置为:thinkphp 网站需要开启https证书 数据库...

    微信小程序完整商城类demo:灵动云商(含PHP后端)(线上)程序源码

    微信小程序完整商城类demo——灵动云商,是一个包含PHP后端的电商解决方案,旨在为开发者提供一个快速构建线上商城的平台。这个项目不仅涵盖了微信小程序前端的开发,还包含了服务端的实现,使得用户能够通过微信小...

    php后端的小程序商城(完整前后端)

    《PHP后端驱动的微信小程序商城:打造无缝购物体验》 在当今的互联网时代,微信小程序因其无需下载、即用即走的特点,已经成为商家在线销售的重要渠道。本资源提供了一个基于PHP后端技术构建的微信小程序商城,为...

    微信小程序--报修系统(后端php).zip

    【微信小程序--报修系统(后端PHP)】 微信小程序是一种轻量级的应用开发平台,由腾讯公司推出,主要用于在微信内部提供便捷的服务。在这个项目中,“报修系统”是针对用户日常生活中设备或设施故障报修需求而设计...

    新自助图文打印系统/证件照云打印微信小程序源码 PHP后端 附教程

    本文将详细讲解“新自助图文打印系统/证件照云打印微信小程序源码 PHP后端 附教程”这一项目,这是一套完整的自助打印解决方案,包括最新的2023年UI设计,微信小程序前端,以及PHP后端源码,并提供配套教程,方便...

    后端开发-基于PHP实现的拼车小程序后端代码.zip

    在本项目中,我们关注的是一个基于PHP实现的拼车小程序后端开发。这个压缩包包含的是一套完整的后端代码,用于支持一个拼车应用的后台服务。PHP是一种广泛使用的开源服务器端脚本语言,尤其适合Web开发,能够与各种...

    同城拼车(PHP后端)小程序源码

    【标题】:“同城拼车(PHP后端)小程序源码”是指一套基于PHP技术构建的用于实现城市内拼车服务的小程序后端代码。这个源码提供了实现拼车平台所需的基本功能,让开发者能够快速搭建一个方便用户发布和查找拼车信息的...

    小程序源码之私语:录音及播放(含PHP后端).zip

    该压缩包文件“小程序源码之私语:录音及播放(含PHP后端).zip”包含了一个小程序的完整源代码,特别关注于录音和播放功能,并且集成了PHP后端服务。这个项目可能是一个教学资源,适用于程序设计或课程设计的学习者...

    Shuttles;PHP后端【小程序带后端】.rar

    PHP后端【小程序带后端】.rar" 这个标题揭示了我们正在处理一个与Web开发相关的项目,具体来说是涉及到PHP后端技术和微信小程序。"Shuttles"可能是一个项目名称或者功能模块的代称,暗示这个项目可能与交通、数据...

    微信小程序云商城php后端

    总结,微信小程序云商城php后端是一个集成了前端交互设计、后端业务处理、数据库管理、安全防护以及运维部署等多方面技术的综合项目。开发者需要具备微信小程序开发、PHP编程、数据库设计、网络安全和Web服务器配置...

    小程序源码《实时巴士》带PHP后端

    这个压缩包包含三部分:实时巴士-小程序.rar、实时巴士前端.zip和实时巴士php后端.zip。 1. **小程序源码**: 微信小程序是一种轻量级的应用开发平台,无需安装即可使用,特别适合公共交通查询这种高频次、低停留...

    IAPP源码聊天软件IAPP源码+php后端

    【IAPP源码聊天软件IAPP源码+php后端】是一个基于PHP开发的聊天应用程序,它提供了完整的前后端解决方案,使用户能够构建一个实时、交互式的通讯平台。这款源码可能包括服务器端的PHP代码、客户端的应用程序界面(如...

    仿盒马生鲜小程序后端管理程序一套(带源码)

    2. **后端管理程序**:这是用于支持小程序运行的服务器端组件,处理用户的请求,与数据库交互,进行数据处理和业务逻辑运算。它可能基于常见的后端框架如Spring Boot、Django或Node.js的Express。 3. **源码**:...

    语音日记本;php后端【小程序带后端】.rar

    php后端【小程序带后端】.rar"指的是一个包含完整前后端的小程序项目,其中后端使用PHP语言开发,主要用于实现语音日记本的功能。这个项目不仅提供了用户界面,还包含了处理数据和交互逻辑的服务器端代码。 【描述...

    语音日记本;php后端_微信小程序模板js代码前台前端H5页面源码+后台源码.rar

    《语音日记本:PHP后端与微信小程序前端的整合应用》 在当今移动互联网时代,微信小程序因其无需安装、即用即走的特性,成为众多开发者和用户青睐的平台。本资源提供的是一个完整的“语音日记本”项目,涵盖了PHP...

    PHP开发高可用高安全App后端

    PHP高可用高安全App后端开发指南 PHP 是一种广泛应用于 Web 开发的服务器端脚本语言,具有高效、灵活、跨平台等特点。随着移动互联网的普及,高可用高安全的 App 后端开发成为企业的迫切需求。以下是 PHP 开发高...

    全开源的付费小剧场短剧视频程序源码,前端uniapp 后端php

    标签“软件/插件”表明这是一个软件应用程序,而“前端”和“uniapp”、“php”则具体指出了软件的前端技术和后端语言。这些标签有助于理解整个项目的技术架构。 压缩包内的文件包括: 1. "服务端.rar":这是后端...

    德州扑克 PHP 后端

    PHP是一种广泛应用于Web开发的开源脚本语言,尤其适合处理动态内容和交互式应用程序。在这个项目中,后端开发者负责设计、实现和维护游戏服务器,以确保玩家能够进行顺畅、公平的游戏体验。 【描述】:“可以学习”...

Global site tag (gtag.js) - Google Analytics