问题标签 [php-internals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - php.ini 中的 Extension 和 zend_extension 有什么区别?
当我通过 安装 Xdebug 时pecl
,它将以下行添加到我的 php.ini 文件中。
我用过的一切都奏效了。直到今天。
今天我在设置 Xdebug 进行交互式调试时遇到了麻烦。在将上述内容更改为之前,我无法进行任何工作
(警告:我认为这是让我工作的原因,但我不是 100% 确定)
这在我脑海中提出了这个问题。extension=
通过vs.加载扩展有什么区别zend_extension
?
php - Zend 引擎可以嵌入到 PHP 之外吗?
如果我记得的话,Zend 引擎的原始设计之一是它相对容易嵌入到人们可能希望创建的其他语言中。基本上,没有所有 PHP 模块的 PHP 语法。现在还是这样吗?
php - “zend_mm_heap 已损坏”是什么意思
突然之间,我的应用程序遇到了以前从未遇到过的问题。我决定检查 Apache 的错误日志,发现一条错误消息说“zend_mm_heap 已损坏”。这是什么意思。
操作系统:Fedora Core 8 阿帕奇:2.2.9 PHP:5.2.6
php - 在不知道资源类型的情况下获取 zend 资源
zend_fetch_resource
是否可以在不知道获取资源类型的情况下获取 zend 资源( )?如果是这样,怎么做?
注意:我正在编写 PHP 扩展。
php - 是否可以防止zend引擎释放资源?
是否可以防止 zend 引擎释放 PHP 中分配的资源?
例如,当一个进程被 forked() 并且资源被复制到子进程时,当子进程或父进程退出时,资源是空闲的,因此其他进程无法再访问它们。
php - 使用修改的 DEBUG_ZEND 级别编译 PHP
我正在调试一个 PHP 扩展,并在浏览 PHP 源代码时发现了这一点:
所以我想在 DEBUG_ZEND 设置为 2 的情况下进行编译。在Zend/zend_compile.h
中,我看到:
我将该值编辑为 2,然后尝试通常的方法:
make
做了一段时间,但后来我看到一堆Reducing refcount for ...
消息然后make
失败了:
如果我设置DEBUG_ZEND
回 0,PHP 可以正常编译。我能找到的唯一参考DEBUG_ZEND
是在这个错误报告中:
http://bugs.php.net/bug.php?id=45761
这个片段看起来很相关:
我通过在配置命令的开头添加 CFLAGS="-DDEBUG_ZEND=2" 重新配置,做了一个'make clean',然后'make' ...
所以我CFLAGS="-DDEBUG_ZEND=2"
在shebang之后立即添加configure
并能够编译。但是,在运行我的脚本时,我没有看到任何关于引用计数的额外输出,所以我并不真正相信它做了什么。
DEBUG_ZEND
设置为 2编译 PHP 的正确方法是什么?
php - 跨多个请求的扩展中的 Zend 全局变量
正如标题所解释的,我想维护来自多个客户的请求的信息。让我举一个简单的例子来解释我想要什么。这个例子只是为了说明我的问题,而不是帖子的目的。
示例:我想计算到目前为止服务器从所有客户端收到的针对不同 php 脚本的请求总数。我的意思是来自多个不同客户端的多个不同页面的请求总数。我现在将有一个扩展来读取该全局计数并将其返回给 PHP 程序员。
Zend 提供的超级全局变量在来自同一客户端的多个请求中是持久的。有谁知道如何以及在哪里存储变量以及检索它的方式?
php - 在 PHP 中,当 $foo = new Foo() 时,从技术上讲,$foo 是一个对象,还是 $foo 一个引用?
更新:在
它说:
常被提及的 PHP5 OOP 的关键点之一是“对象默认通过引用传递”。这并不完全正确。
这是为什么?以下是我不知道是否完全正确的原因:
我认为松散地说,foo 可以说是一个对象,或者类 Foo 的一个实例。
但是从技术上讲,foo 只是一个引用,这在 Java 和 Ruby 中的方式完全相同,其中变量foo
始终只是对对象的引用,这是真的吗?
这就是为什么在 PHP 中,
我们没有说“通过引用传递”,但从技术上讲,我们是在传递一个值,这是一个引用。因此,它是“通过引用”,而不是“通过引用”。
但是,如果我们在 PHP 中说 foo 是一个对象,那么我想“通过引用传递”是有道理的。这是真的吗?foo 据说是对对象的引用,而不是对象,所以这就是为什么我们只是“按值传递”?