PHP多进程讲解(六):进程通信之信号量

信号量来看下百科的解释。信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore V

- 阅读全文 -

PHP多进程讲解(五):进程通信之共享内存通信

前面几篇文章,我们介绍了PHP的多进程创建及一些进程的特殊状态。今天这篇文章我们来讲解下进程间的通信。背景前面我们也提到过,在 fork 执行之后,父进程和子进程的内存空间是独立的了,所以它们是无法直接进行通信的。但是复杂的应用需求要求我们需要父进程与子进程可以相互通信,了解各自的状态好协调运行完成任务。通信的方式在 linux 中,进程间的通信主要有下面几种:管道消息队列共享内存信号量socke

- 阅读全文 -

PHP多进程讲解(四):信号注册与处理

信号是进程间通信的方式之一。比如子进程执行完成,则会发送 SIGCHLD 给父进程,告诉父进程,我执行完啦。在linxu系统中,我们可以执行下面的命令来看看系统有哪些进程间的信号:kill -l HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU

- 阅读全文 -

PHP多进程讲解(三):僵尸进程

Q:什么是僵尸进程? A:子进程在结束运行后,父进程未进行相应处理,就成为了僵尸进程。僵尸进程的产生有几下几种原因:父进程未 wait 子进程。子进程发送信号 SIGCHLD 给父进程,但是父进程没有理睬。其它原因总之,父进程不负责的情况下,就可能会产生僵尸进程。下面我们用代码来演示下:<?php $pid = pcntl_fork(); if ($pid === -1) { e

- 阅读全文 -

PHP多进程讲解(二):孤儿进程

依旧讲解PHP进程的相关知识。Q:什么是孤儿进程呢? A:孤儿进程就是父进程作为老爹已经挂掉了,但是子进程还在跑着,这个时候呢,子进程就成为孤儿了。在linux系统中,这个时候呢,就有进程pid为1的老祖宗收留这个孤儿进程,直到孤儿进程运行结束或者直接干掉TA。下面,我们来演示下,孤儿进程是如何产生的:<?php $pid = pcntl_fork(); if ($pid === -1)

- 阅读全文 -

PHP多进程讲解(一):pcntl扩展创建多进程

前言PHP开发的小伙伴很少接触到多进程的概念。 当然,随着对`计算机及操作系统的熟悉和学习,进程自然需要我们去掌握TA。 PHP也是有多进程的操作的,我们可以通过下面的命令查看PHP是否可以创建多进程:php -m |grep pcntl如果输出 pcntl 的话则说明支持。当然,PHP也有其它创建多进程的方法,本篇文章讲解的是利用pcntl扩展来创建多进程。在使用pcntl创建多进程之前,我

- 阅读全文 -

判断字符串是否在数组中,你会怎么写?

in_array 函数大部分小伙伴第一时间想到的答案就是:in_array 函数啦,是吧,这是PHP内置的函数,可以判断字符串是否在数组中:<?php $arr = ['str1', 'str2', 'str3']; var_dump('str4', $arr);但是吧,这种写法效率不高,特别是数组中元素非常多的时候。TA的时间复杂度取决于数组的长度,也就是N。isset 方法$arr =

- 阅读全文 -

PHP导出csv在window下打开乱码

mac下打开导出的csv文件上是正常的,但是window打开csv是乱码的,搜索了下解决方案,需要在导出内容前面加上BOM头,也就是这个:chr(0xEF) . chr(0xBB) . chr(0xBF)这里给一个示例:$data = [chr(0xEF) . chr(0xBB) . chr(0xBF) . "学生,分数,是否及格"]; foreach ($or

- 阅读全文 -

PHP7.4部分新特性

类属性类型修饰<?php class User { public int $id; public string $name; }7.4之后,可以给类属性增加类型限定了。箭头函数(语法糖)<?php $factor = 10; $nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]); // $nums = ar

- 阅读全文 -

PHP程序员职业规划之公司篇

由于小滕自身在杭州,所以这篇文章以杭州的环境举例子。这几年,可以明显的感觉到PHP再走下坡路,其实这也不能怪PHP,应该说整个互联网行业在走下坡路。这间接地就影响了PHP。为什么这么说呢。可以在boss直聘上搜索下招聘PHP程序员的公司,你可以发现,这些公司基本上都是小公司,规模在0-20人的比较多,规模在A轮,B轮的也比较多。C轮以上的就很少了。小滕在杭州这边的发现的话,D轮及以上的还在使用PH

- 阅读全文 -

PHP程序员的职业规划之自身规划

很多大佬感叹:”PHP程序员的基础太差。“这点不可否认,在面试过程中,如果你问稍微基础的知识点,比如说数据结构,算法这些,大部分PHP程序员都答不出来,或者说只能说个大概,但是具体原理不清楚。当然,小滕这里说的是PHP程序员,其它语言的小滕不清楚,也不想引起语言间的战争。为什么会出现这种情况呢?小滕自己分析的话有下面几点原因。PHP语言较为简单上手很快。脚本型语言+弱类型让你学习感到so easy

- 阅读全文 -

浅谈PHP语言的深入学习之道

很多小伙伴都问过小滕一个问题:”小滕,你是如何学习PHP的啊?“从这句话中小滕可以感觉出来,那就是提问的小伙伴对于自己在PHP的学习道路上可能存在一定的疑惑了。这其实很正常,在学习的过程中,会遇到一个又一个瓶颈,而长期处于瓶颈中后,会使人感到疑惑。如果没有较大的行为打破这个变化,那么瓶颈就会使人更加难受。特别是小伙伴如果辞职去寻找新的工作机会,这种时候愈发能感受到自己的瓶颈和差距所在。但是,虽然可

- 阅读全文 -