1

我正在完成一个 JQuery 插件,我需要在插件处于活动状态时收集一些活动的使用数据。这些数据需要远程存储在我的服务器上。

但是,我正在尝试找到执行此操作的最佳方法。我猜这与收集网络分析数据的方式类似。我现在看到两个选项,我概述了以下基本步骤。

A. AJAX - 使用这种方法:

  1. 我使用 JQuery 在我的 JQuery 插件中设置 Ajax 请求以将数据发布到服务器
  2. 我设置此服务器以捕获已发布的数据,然后使用 PHP 插入数据库表

B. SOCKETS - 使用这种方法:

  1. 我注册了 PubNub 之类的服务
  2. 我在我的 JQuery 插件中使用 PubNub Javascript SDK 将消息“发布”到给定的“频道”
  3. 我设置了一个专用服务器或云服务器,并使用SSH登录,安装Web服务器+数据库+ PHP,并确保它工作正常
  4. 我创建了我的 PHP 脚本(使用 PubNub PHP SDK)来“订阅”我的插件将发布消息的 pubnub“频道”,然后设置机制以从消息中捕获数据并插入到数据库表中
  5. 我设置了 supervisord 来守护我的 php 脚本,然后启动守护进程,因为我需要一个长期存在的 PHP 进程来通过服务器运行 PubNub 订阅功能。

我更喜欢 A,因为它对我来说是最简单的选择,我可以使用任何托管的 MySQL/PHP 服务器以最少的麻烦完成它。但是,我担心当插件在数千个不同的网站或一些非常繁忙的网站中使用时,这种方法的性能如何,在我的远程服务器上每秒可能有 10 到 100 次数据库提交。

将 B 方法与套接字一起使用是否更有意义,因为我需要订阅 PubNub 才能实现这一点,但成本可能要高得多。另外,由于我不需要异步连接,因为我只需要为每个用户发出一个请求,我认为与直接发送到我的服务器的可靠 ol' HTTP 请求相比,套接字可能是矫枉过正的(而不是发送消息通过 PubNub,然后给我)。

真正做到这一点的最好方法是什么?!

提前致谢。

4

2 回答 2

1

肯定是选项A。另外,如果您真的担心对 PHP 脚本的大量点击,请查看 AppFog 之类的东西,它们免费提供相当多的东西,如果出现问题,可以减轻服务器的负载。

于 2012-12-20T02:17:35.867 回答
1

你是对的,套接字是矫枉过正的。甚至 Google Analytics 也使用 HTTP 请求来发送数据。这些请求不需要及时(例如毫秒无关紧要),因此没有理由打开套接字。

于 2012-12-20T17:50:46.770 回答