首页 后端开发 php教程 php写后端运作程序总结

php写后端运作程序总结

Jun 13, 2016 am 10:31 AM
exec google memcache php

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

//启动的命令
$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??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分钟。这样处理之后,服务器的持续性就大大增加了,并发能力也会提高。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

为了进行文件上传,我们将使用表单助手。这是文件上传的示例。

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

谷歌向大多数用户开放 AI Test Kitchen & Imagen 3 谷歌向大多数用户开放 AI Test Kitchen & Imagen 3 Sep 12, 2024 pm 12:17 PM

谷歌的 AI Test Kitchen 包括一套供用户使用的 AI 设计工具,现已向全球 100 多个国家的用户开放。此举标志着世界各地的许多人第一次能够使用 Imagen 3、Googl

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 是一个开源MVC 框架。它使开发、部署和维护应用程序变得更加容易。 CakePHP 有许多库可以减少大多数常见任务的过载。

您如何在PHP中解析和处理HTML/XML? 您如何在PHP中解析和处理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

php程序在字符串中计数元音 php程序在字符串中计数元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

See all articles