PHP curl 调用 Web 服务 1 亿次

标签 php performance curl redis nosql

我需要设计一个程序来循环遍历 1 亿个关键字,调用 Web 服务 ( http://example.com/service.aspx?keyword=xxxx ) 并将以 JSON 形式输出的结果保存到 redis 中。

我的想法是开始大量插入所有关键字(这是对 web 服务的输入)到 redis。

之后,我将使用 rolling-curl 编写一个 PHP 脚本它将从 Redis 读取并用两件事更新它:标志和结果。 flag 键将用于跟踪更新的记录,后者将用于存储 JSON 字符串,如下所示:

{
  "keyword": "keyword_1",
  "flag": 1,
  "output": "result": [
    {
      "ID": "21",
      "field1": "some text",
      "field2": "another text"          
    },
    {
      "ID": "150",
      "field1": "some text",
      "field2": "another text"          
    },
    {
      "ID": "255",
      "field1": "some text",
      "field2": "another text"          
    }    
  ]
}

问题:

1) 就完成此任务的预期时间而言,这是最好、最有效的方法吗?

2) 使用这个数据结构,我可以搜索我的 redis 并使用 field1 或 field2 找到关键字吗?如果没有,如何使用 Redis 实现?

谢谢

最佳答案

+1 to Dagon - Redis 是一种“内存中”存储……因此,如果您的数据集应该代表一行,那么您将需要超过 35GB 的内存。

接下来是发送 1 亿个请求并收集结果所需的时间。即使您不等待服务器的响应并且可以询问下一个,这仍然需要很长时间。

最后 - 按字段查询在具有 1 亿个条目的 Redis 中无法正常工作。您可能会考虑 MongoDB - 如果您想要丰富的即时查询 - 或者 Couchbase 或 CouchDB - 如果 View (相当有限和预定义的查询)就足够了。


所以最后,如果归结为您的目标时间范围。如果你想让程序每周运行一次,从性能上来说应该足够好了。如果你可以为 redis 提供内存,它会工作,但是查询字段会很慢,因为坦率地说你不应该使用它们。当你有大数据集时,你应该只查询索引的字段。因为 Redis 不支持二级索引,所以你不能在那里做。

关于PHP curl 调用 Web 服务 1 亿次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24092333/

相关文章:

c++ - 最快的 C++ map ?

c# - 如何使用curl对Web服务进行身份验证?

curl - 如何让 Gitlab repo 中的所有用户?

php - 如何使用 CURL 获取 HTTPS 的 Body 内容

javascript - 使用带进度指示器的 AJAX 上传图片

php - 从多列中选择 : codeIgniter

java - 执行包含 java -jar Runtime.exec() 的 shell 脚本,它将使用哪个 java,操作系统级别还是应用程序级别

sql - PostgreSQL 中的慢 GroupAggregate

php - 如何获取上月和下月?

php - 如何使用 PHP 列出按字母顺序排序的目录中的所有文件?