我正在使用 php7.4-fpm,连接到 PostgreSQL 12.3 (Ubuntu 12.3-1.pgdg18.04+1)。
当我使用 pgadmin4 时,查询在 129 毫秒内执行,结果立即显示在屏幕上,在 php 上执行相同的查询大约需要 4 秒。我做错了什么?
我的缺点:
$conStr = sprintf("pgsql:host=%s;port=%d;dbname=%s;user=%s;password=%s",
$params['host'],
$params['port'],
$params['database'],
$params['user'],
$params['password']
);
$pdo = new PDO($conStr);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
这是一个示例查询,但我运行什么查询没有任何区别,但是在 PDO 中运行查询与在 pgadmin 中运行查询相比,有一个明显的差异:
SELECT job_number, customer, (SELECT to_jsonb(other_names) FROM companies WHERE name=customer) AS customer_other_names, description, customer_order_number, delivery_date, delivery_address, price, completed_date FROM jobs;
2020年7月9日编辑:
发现HTTP2协议是连接缓慢的原因,我偶然发现,在将数据传递到php时遇到一些问题。
寻找解决方案,同时恢复到 HTTP1.1
编辑2020-07-11
看来 HTTP2 不是原因,只是重启 Apache2 服务后速度快了一点,但很快就恢复“正常”了,速度很慢。我不明白,这些表最多包含 100 条记录以下,只有很少的列,并且在 pgsql 下查询并不慢。我确信 php 中有一些东西,只是找不到它。