我有一个从我的应用程序通过 cURL 传递 POST 变量到我的其他应用程序的 API 调用,如下所示:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $paramString,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 600,
CURLOPT_CONNECTTIMEOUT => 60,
));
在这个 $url
应用程序中,我尝试从一个表中获取 2000 万条记录,然后通过 JSON 传递它,就像这样:
public function apiMethod()
{
$response = $this -> _db -> fetchAll('SELECT t.hash FROM table t WHERE id BETWEEN 20000000 AND 40000000;');
echo json_encode($response);
}
当然是使用 PDO。
好的,这有两个问题: 1. FetchAll() 对这么多记录不起作用 - 内存超出。 2. Json 不适用于这么多记录 - json 有最大大小。
我一直在考虑多次调用 cURL 并每次都获取比方说 100,000 条记录,而不是获取所有记录。这是唯一的方法吗?最好的方法是什么?
最佳答案
您的主要问题是架构。
显然,最好的方法是不拥有一个需要在每次调用时传输无数行的 API。
要么实现一种只检索一行的方法,这适用于 API,要么重新考虑整个架构。比如,磁盘复制或数据库复制等。
关于php - 通过 API 获取数百万条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32633580/