gpt4 book ai didi

PHP 调用 Graphdb 在 shell 中工作,而不是在浏览器中工作

转载 作者:行者123 更新时间:2023-12-02 19:55:36 25 4
gpt4 key购买 nike

为什么这个小特技在 shell 中获得了预期的输出,但在浏览器中却没有?

这里有详细信息。
我想通过 PHP 以及任何常见 Web 浏览器中的 Brightzone 库从 Ubuntu Docker 中的 Azure 订阅内的 CosmosDB 上的 Graph-DB 进行读取。
本质上
不工作:         GraphDB->CosmosDB->Azure->Docker->Ubuntu->PHP->Brightzone->浏览器
完美工作:GraphDB->CosmosDB->Azure->Docker->Ubuntu->PHP->Brightzone->Shell

我的 Ubuntu Docker 设置:

docker image pull ubuntu
docker run -it -p 80:80 -v /<localpath>/httpVolume:/var/www/html ubuntu /bin/bash

apt install apache2
apt install php libapache2-mod-php
apt install git
apt install php7.2-mbstring
apt install curl

/etc/init.d/apache2 restart

cd /var/www/html/

echo "{" > composer.json
echo -e ' "require": {' >> composer.json
echo -e ' "brightzone/gremlin-php": "3.*"' >> composer.json
echo -e " }" >> composer.json
echo -e "}" >> composer.json

curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
composer install

php composer.phar require brightzone/gremlin-php "3.*"

我的 PHP 文件很大程度上取自 Microsoft 示例。
git 克隆 https://github.com/Azure-Samples/azure-cosmos-db-graph-php-getting-started
PHP 文件:

<html>
<header>
<title>test</title>
</header>

<body>
<?php
require_once('vendor/autoload.php');
use \Brightzone\GremlinDriver\Connection;

$db = new Connection([
'host' => '<Resourcename>.gremlin.cosmos.azure.com',
'username' => '/dbs/<graphdatabasename>/colls/<MySillyTestCollection>',
'password' => '<prettyLongAzureKey>'
,'port' => '443'

// Required parameter
,'ssl' => TRUE
]);

try {

$db->timeout = 0.5;

$db->open();

if($db){
$query = "g.V().count()";
printf("\t%s\n\tQuery: %s\n", "Counting all the vertices.\n", $query);
$result = $db->send($query);

if($result) {
printf("\tNumber of vertices in this graph: %s\n\n", $result[0]);
}
} else {
echo "Can't open DB";
}

$db->close();
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
</body>
</html>


这是有趣的部分。
从 shell 执行时它会起作用。 phpindex.php
它会给我:该图中的顶点数:4
Docker 容器内或主机上的任何浏览器都不会向我显示预期的和非常想要的 4,而是打印被调用的函数 g.V().count()

我必须为自己建立一个令人讨厌的工作环境并调用 exec() 吗?我想避免它。

最佳答案

我通过使用ob_flush()解决了这个问题;冲洗();和 ob_end_flush();在我的脚本中。不知道为什么,现在我不敢问。

关于PHP 调用 Graphdb 在 shell 中工作,而不是在浏览器中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58257000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com