You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用brightzone gremlin-php连接Cosmos DB调用send方法报错

使用brightzone gremlin-php调用Cosmos DB时出现fwrite资源为null的错误

问题概述

基于免费版Cosmos DB,使用brightzone gremlin-php API开发应用时,官方CLI脚本可正常运行,但自定义调用send()方法时触发以下错误:

Fatal error: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, null given {...}
错误位于vendor/brightzone/gremlin-php/src/Connection.php第174行。

补充测试结果:

  • 通过XAMPP浏览器或虚拟主机运行官方connect.php脚本无报错,Cosmos仪表盘显示请求量正常上升
  • 自定义代码使用与官方一致的对象初始化逻辑,但调用send()时触发错误

代码对比

官方CLI脚本初始化后,通过函数调用send():

function countVertices($db)
{
    $query = "g.V().count()";
    $result = $db->send($query);
    // ...后续逻辑
}
// 官方脚本中大概率在调用此函数前已执行$db->open()

自定义代码直接调用send():

$query = "g.V().count()";
$result = $db->send($query);
var_dump($result);

解决方案

你大概率遗漏了建立连接的步骤。在调用send()方法前,必须先执行$db->open()初始化连接流:

$query = "g.V().count()";
// 先建立连接
$db->open();
$result = $db->send($query);
var_dump($result);
// 用完记得关闭连接(可选但推荐)
$db->close();

原因分析

brightzone gremlin-php的Connection类需要通过open()方法初始化与Cosmos DB的WebSocket连接,生成有效的stream资源。官方CLI脚本可能在调用业务函数前已经执行了$db->open(),而你的自定义代码直接跳过了这一步,导致send()方法执行时stream为null,触发fwrite的类型错误。

这和Cosmos DB免费版限制无关,是API调用流程的疏漏。

内容的提问来源于stack exchange,提问作者FEERspreads

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:45:33