https://blog.csdn.net/u013474436/article/details/53309028?utm_source=blogxgwz1 https://stackoverflow.com/questions/35006614/what-does-symbol-not-found-expected-in-flat-namespace-actually-mean https://stackoverflow.com/questions/18809986/undefined-reference-to-strnlen-s-strncpy-s-strncat-s https://www.hongweipeng.com/index.php/archives/1014/ strlen_s 是微软的库,mac不能用
(gdb) run testmyFile.php Starting program: /usr/local/bin/php testmyFile.php Unable to find Mach task port for process-id 22822: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8))
$sudo gdb php 这是因为 Darwin 内核在你没有特殊权限的情况下,不允许调试其它进程。调试某个进程,意味着你对这个进程有完全的控制权限,所以为了防止被恶意利用,它是默认禁止的。允许 gdb 控制其它进程最好的方法就是用系统信任的证书对它进行签名。 问题解决 https://segmentfault.com/q/1010000004136334
zend_string 和char*不是一个东西,因此转换的时候特别注意 写扩展的时候遇到了一个bug 明明写进去了 add_assoc_long(MYFILE_G(my_func_set), func_name, timeElipsed); 但是取出来一直是0 zval* lastVal = zend_hash_find(Z_ARRVAL_P(MYFILE_G(my_func_set)),key); 排查发现key的类型不对 写进去是char* 取出来却是zend_string一定要注意
nginx和php-fpm的进程启停重载总结 nginx和php-fpm对于-USR2、-HUP信号的处理方式不一样: TERM, INT(快速退出,当前的请求不执行完成就退出) QUIT (优雅退出,执行完当前的请求后退出) HUP (重新加载配置文件,用新的配置文件启动新worker进程,并优雅的关闭旧的worker进程, 用于nginx的加载新配置,不能用于php-fpm加载新配置) USR1 (重新打开日志文件) USR2 (平滑的升级nginx二进制文件/平滑加载php-fpm新配置) WINCH (优雅的关闭worker进程) php-fpm #关闭 kill -QUIT $php_fpm_pid
当你在扩展中使用 HashTable 时候,大部分情况下是要存储用户端的变量,就像 PHP 语言中数组那样。为此,内核中已经准备好了相应的工具,来让我们更加的方便的操作 HashTable 存储 zval*,也就是 PHP 语言中的数组,即 IS_ARRAY 常量代表的 zval,以下用 {数组} 来代替 PHP 语言中的数组这个词。