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的学习道路上可能存在一定的疑惑了。这其实很正常,在学习的过程中,会遇到一个又一个瓶颈,而长期处于瓶颈中后,会使人感到疑惑。如果没有较大的行为打破这个变化,那么瓶颈就会使人更加难受。特别是小伙伴如果辞职去寻找新的工作机会,这种时候愈发能感受到自己的瓶颈和差距所在。但是,虽然可

- 阅读全文 -

java实现希尔排序

希尔排序是插入排序的升级版,主要是减少插入排序的数组搬移次数,代码如下:package com.xiaoteng; import java.util.Arrays; public class ShellSort { public int[] sort(int[] a) { int size = a.length / 2; while (size !=

- 阅读全文 -

java实现插入排序

package com.xiaoteng; import java.util.Arrays; public class InsertSort { public int[] sort(int[] a) { int[] b = new int[a.length]; for (int i = 0; i < a.length; i++) {

- 阅读全文 -