问题标签 [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.

0 投票
5 回答
9075 浏览

php - PHP 中的关联数组是如何实现的?

有人可以解释 PHP 如何实现关联数组吗?PHP 使用什么底层数据结构?PHP是否对密钥进行哈希处理并将其存储在某种哈希映射中?我很好奇,因为我想知道关联数组在插入和搜索键时的性能如何。

0 投票
2 回答
854 浏览

php - 编译 swig 界面后缺少符号

我试图为我的 linux 共享对象编译一个 php 接口,并且我已经设法使用 swig 的输出让它编译得很好,但是当我尝试加载它时,它抱怨缺少符号:

现在我看了一下zend,它似乎是一个php框架。我想我缺少一个要链接的库,但我不知道哪个库。

有其他人以前做过这个并让它工作吗?

编辑:

0 投票
3 回答
9816 浏览

c - 阅读 Zend Engine API 代码:##(双哈希)是什么意思?

出于好奇,我正在阅读 Zend Engine API 代码,并在他们的#define 中遇到了相当多的##。例如,在 /usr/lib/php5/Zend/zend_API.h:

这两行中的##(双哈希)符号是什么意思?

0 投票
1 回答
345 浏览

php - 当 php 设置为记录到 syslog 时记录 REQUEST_URI 变量

这是 php_log_err 的源代码。我想修改它以便能够记录变量_SERVER["REQUEST_URI"]

我有这个应该离解决方案不远,但我无法让它工作:

0 投票
1 回答
580 浏览

php - PHP 5.2.9 在 zend_execute.lo 上构建失败 - 内存不足?

我正在尝试使用 EXIF 支持编译 PHP。每次我尝试在运行 CentOS 5.3 的虚拟专用服务器上构建 PHP 5.2.9 时,在构建 zend_execute.lo 时都会失败。我尝试自己编译该文件,但它失败了。说内存不足,在...之后分配 [####] 个字节。

如何编译 PHP?

0 投票
1 回答
1443 浏览

php - 如何将数组作为对象属性添加到 PHP 扩展中声明的类?

我希望我的 PHP 扩展声明一个等效于以下 PHP 的类:

我遵循“高级 PHP 编程”和“扩展和嵌入 PHP ”中的示例,并且能够在PHP_MINIT_FUNCTION.

但是,当我使用相同的方法在 中声明数组属性时PHP_MINIT_FUNCTION,我在运行时收到以下错误消息:

高级 PHP 编程的第 557 页上有一个示例,说明如何声明创建数组属性的构造函数,但示例代码无法编译(第二个“对象”似乎是多余的)。

我修复了该错误并将其调整为我的代码:

这可以编译,但它在构造时给出了相同的运行时错误。

0 投票
3 回答
889 浏览

c - 使用 zend 读取 php.ini 进行 PHP 扩展(不是 PHP 语言)

我正在尝试使用 zend 从 php.ini 读取一些设置。我正在使用的 API 是

但它总是返回 0。我仔细检查了名称,并确保我在 php.ini 中指定的值大于 0。有什么我遗漏的吗?

0 投票
3 回答
14777 浏览

php - PHP扩展入门-开发

请推荐有关 PHP“低”级С-modules 编程接口的帮助文章或教程。

0 投票
1 回答
2302 浏览

java - jni中的回调

有什么方法可以将回调从 C 传递给 java 代码。并且调用立即返回。稍后,在完成任务后,java 代码可以调用该回调。

我有一个用于 php 的 C 扩展,它调用一个 java 商店来在其中存储一些项目。可以通过同步和异步方法从存储中检索项目(我为存储提供键列表和回调,它调用回调并返回其中的项目)。

我能够从扩展同步检索项目,但现在我不知道如何异步进行。

  • 有什么方法可以让我的 C 代码提供指向 java 以后可以调用的函数的指针?
  • 或者是否有可能我每次 C 代码要求异步检索项目时创建一个 java 线程,然后该 java 线程调用可以将项目返回给用户的 C 函数?

作为最后的手段,我可​​能必须在 C 代码中创建一个线程,并在该线程中排队可以从 java 检索的键。

或者zend中是否有任何支持允许我将任务排队以及zend可以为队列中的每个任务一个接一个调用的回调?

0 投票
1 回答
2308 浏览

php - 链接用 C 编写的 PHP 扩展

编辑:修改我的问题

在 C 中构建外部 PHP 模块时,如何链接共享对象?