php - 收集、管理数据并通过 API 提供

标签 php database web-services web-crawler

这是我的问题: 我有许多已知位置(我对这些位置没有影响)和大量数据。每个位置在各个时期都为我提供了大量新数据。有些给我差异更新,有些只是整个数据集,有些是通过 xml,有些我必须构建一个网络爬虫,有些需要身份验证等...... 这些收集的数据应该存储在数据库中。我必须编写一个 api 以返回 xml 中请求的数据。

条条大路通罗马,我该选择哪条?

您建议我使用哪个软件?

我对C++,C#,Java,PHP,MySQL,JS很熟悉,但新东西还是可以的。

我的想法是使用cron jobs + php (or shell script) + curl来获取数据。 然后我需要一个模块来解析数据并将其插入数据库(mysql)。 来自客户端的数据请求可以响应一个 php 脚本。

我认为输入数据量大约是 1-5GB/天。

没有一个正确答案,但你能给我一些建议吗? 如果你能告诉我更聪明的方法来做到这一点,那就太好了。

非常感谢:-)

最佳答案

LAMP:坚持使用 PHP 和 MySQL(并偶尔尝试使用 perl/python):PHP 库、存储解决方案、可扩展性和 API 解决方案的可用性及其社区规模很好地弥补了任何其他环境产品。

API:在开始编写任何导入程序之前,确保设计的 API 查询(和存储/数据库)能够满足所有最终产品需求。日期范围、标记、特殊情况。

性能:如果您需要对异常大的数据集进行闪电般的快速查询,sphinx-search 能帮忙。它不仅仅是文本搜索(标签、二进制文件等),但请确保您指定了具有更多 RAM 的服务器要求。

IMPORTER:使其模块化:例如,对于每个不同的数据源,编写一个可以由管理员启用/禁用的可插入导入器,当然,还可以单独测试。根据最适合和最简单的工作选择一种语言和库:bash 脚本就可以了。

PHP的解析库有很多。最近流行的一个是simplehtmldom我发现它工作得很好。

TRANSFORMER:将数据转换例程模块化,以便在需要时编写。不要让进口商改变原始数据,只是让它成为索引数据库的最快方式。转换例程(或更高版本的插件)应与 API 查询结合使用以获得任何最终结果。

时间:cron 执行没有任何问题,只要它们不会失控或导致您的输入源开始节流或阻塞您,因此您需要这种意识。

版本控制:将数据库、导入等设计为管理员可以轻松回滚错误数据的位置。

供应商解决方案:查看 scraperwiki - 他们通过抓取工具和数据存储开展业务。

希望这对您有所帮助。出于好奇,有任何项目细节可以提供给志愿者吗?我的一位同事有兴趣交换笔记。

关于php - 收集、管理数据并通过 API 提供,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747272/

相关文章:

php - 如何使用 PHPUnit 进行单元测试来登录我的 Zend 应用程序

java - 如何在android中的数据库中添加多行?

sql - 在SQL中创建十六进制数

ruby-on-rails - 存储可能相似的元素矩阵

java - 如何创建一个使用 Web 服务的 Java 客户端?

php - 正则表达式匹配给定字符串的 3 个部分

php - 具有 php 支持的简单 C++ Web 服务器

php - SQLite 选择最近 24 小时的记录

.net - 站点 "Notes And Attachments"的 Salesforce SOQL 查询

java - Spring Web 服务流程