析构函数和register_shutdown_function执行先后问题

析构函数/__destruct()

__destruct ( void ) : void

简介

当对象结束其生命周期时
e.g: 对象所在的函数已调用完毕
系统自动执行析构函数

register_shutdown_function

register_shutdown_function ( callable $callback [, mixed $... ] ) : void

简介

在脚本执行完成或调用 exit() 之后注册要执行的回调

可以多次调用 register_shutdown_function()
并且每次调用的顺序都与注册时的顺序相同 如果在一个已注册的关闭函数中调用 exit() 则处理完全关闭
并且不会调用其他注册的关闭函数

PHP生命周期

PHP生命周期主要分为五大阶段

  • 模块初始化
  • 请求初始化
  • 执行
  • 请求关闭
  • 模块关闭

具体流程详情如下

PHP对象的深、浅拷贝

深浅拷贝定义

深拷贝

赋值时值完全复制 完全的copy 对其中一个作出改变 不会影响另一个
即 值传递

浅拷贝

赋值时 引用赋值 相当于取了一个别名 对其中一个修改 会影响另一个
即 引用传递

暴露PHP版本号带来的风险?

最近 被问到一个问题
暴露PHP版本号带来的风险
我是一脸懵的 因为之前没特别留意过这些安全方面的问题

于是乎
我搜索google了许久 发现大部分都是在讲解如何修复
最后 发现原因

PHP | Golang 生成区间随机数的方法

如题
假设 i, j 为整型且满足关系 i < j

PHP

1
2
3
// 内置函数
<?php
echo mt_rand(i, j);

Golang

1
2
3
4
5
6
7
8
9
10
11
12
13
func randNum(i, j int) int {
// 一定要给一个时间戳的种子 否则每次生成都是一样的值
r := rand.New(rand.NewSource(time.Now().UnixNano()))
return r.Intn(j - i) + i
/**
* 也可以使用
* rand.Seed(time.Now().Unix())
* return rand.Intn(j - i) + i
* 需要注意的是
* Seed使用提供的種子值將生成器初始化為確定性狀態
* 種子不應與任何其他rand方法同時調用
*/
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×