Facebook,Gmail,LinkedIn等网站和移动应用如何协同工作?

时间:2016-11-28 14:23:00

标签: php facebook social-networking facebook-apps mobile-application

基本上,我是专业的 PHP开发人员。我只有使用PHP开发网站的经验。我没有创建移动应用程序的经验。

我的组织希望建立一个网站(使用PHP)以及移动应用程序(在Android和iOS中),为某些社区创建社交网络,这与 Facebook网站的功能完全相似和 Facebook应用

但是我没有从哪里开始?怎么开始?我应该遵循什么方法?如何利用PHP来完成所有这些工作?

我想知道 Facebook网站 Facebook应用如何协同工作? 我想知道现象,系统架构,原理,设计模式,技术和其他事情背后的原因是什么?

我在笔记本电脑上使用 Facebook网站,在我的Android智能手机上使用 Facebook应用

每当我在Facebook收到任何通知时,它几乎会在 Facebook网站以及 Facebook应用的同时获得通知。

此外,每当我更新我的状态或做任何活动,例如对帖子做出反应或评论,添加群组更新,添加活动更新等等来自 Facebook网站时,它会立即反映到 Facebook应用程序以及反之亦然的方式。这也很顺利。

根据我的理解, Facebook网站 Facebook应用必须使用相同的数据库来存储和访问数据,但我仍然没有得到它们的方式因为 Facebook网站 Facebook应用程序的代码库本质上完全不同,所以同步协同工作?此外, Facebook网站 Facebook应用的执行方式是完全不同的两种方式。

Facebook应用是使用不同技术(如Android,iOS,Windows Phone,Blackberry等)构建的, Facebook网站是使用PHP构建的所有其他的东西,但他们仍然同步工作。

不同技术共同工作背后的现象是什么?

我在各种网站和应用程序(如Gmail,LinkedIn等)上也观察到同样的事情。他们是否也像Facebook一样处理同样的现象?

请指导我正确的方向。作为PHP开发人员,我对这个项目的方法应该是什么以及如何?

感谢。

8 个答案:

答案 0 :(得分:6)

Facebook网站和Facebook应用程序都使用相同的数据库。 Facebook App最有可能使用REST Web API与Facebook网站的API部分进行通信,以从共享数据库中检索数据或修改共享数据库中的数据。

我建议您在网站旁边编写一个API,用于处理移动应用的数据库通信。

入门的好方法是使用现有的REST API框架。可在此处找到列表:http://davss.com/tech/php-rest-api-frameworks/

答案 1 :(得分:2)

一开始对WebSockets

感兴趣
  

WebSockets 是一项高级技术,可以在用户的​​浏览器和服务器之间打开交互式通信会话。使用此API,您可以将消息发送到服务器并接收事件驱动的响应,而无需轮询服务器以进行回复。

Ratchet

  

适用于PHP的WebSockets

     

Ratchet是一个松散耦合的PHP库,为开发人员提供了通过WebSockets在客户端和服务器之间创建实时双向应用程序的工具。这不是你祖父的互联网。

然后您可以执行Creating Real Time Applications with PHP and WebSocketsReal-Time Web applications with PHP and Ratchet

答案 2 :(得分:2)

我建议您查看Parse.com。不幸的是,他们正在改变他们的系统工作方式,我只能说出我过去的经验。 Parse为您托管数据库,并且它们具有库,使您能够从许多不同的平台和编程语言(包括PHPIOSAndroid)进入数据库。从理论上讲,您所要做的就是下载PHP库并让您的移动开发人员下载IOS和Android的移动库,尽管它比这更复杂。

我不确定这比设置数据库来处理来自PHP和移动设备的调用更有益,但它可能值得研究。同样重要的是要注意Parse正在迁移到用户托管数据库,我不确定这将如何影响新用户或解析提供的好处。您将不得不设置托管数据库,这就是为什么它比下载库更复杂一些。

希望这是有帮助的,祝你好运!

答案 3 :(得分:1)

这是您可以用于您的目的的技术和技术的组合:

  1. 关于架构:您将开发基于API的架构 它允许您拥有一个Web界面或使用任何其他界面 用于访问应用程序中的工具的平台。一世 推荐Yii 2框架或特别是Zend 2框架和 Apigility。最常用的API方法是SOAP和REST 推荐REST,因为它不公开方法并支持JSON。 有很多关于建筑的内容。

  2. 关于数据库:当然你需要一个数据库但如果你担心性能,你可以考虑使用软件解决方案 考虑MySQL性能或使用NoSQL数据库以及 还有其他解决方案,如使用多服务器和群集
    数据库和负载平衡。更重要的是如何使用缓存 (有一些解决方案,如Varnish或Memcached)

  3. 关于设计模式: 设计模式是针对不同情况的一些不同标准。如果你的意思是你可以使用哪种通知设计模式。它是观察者/逆变器设计模式

  4. 推送通知: 您将使用APN(苹果推送通知服务)和GCM(Google云消息传递)服务,该服务允许您通知应用程序有关更改和新通知

  5. 关于应用程序:根据您提供给客户的设施,您可以使用本机开发方法或混合开发(如Cordova)在移动设备中加载相同的表单并调用您的API来更新,删除,创建或其他您拥有或获得通知的操作。 这里也有很多解决方案用于混合应用,例如使用REACT和Mobile Bootstrap或ANGULAR和IONIC框架......

  6. 您也可以使用NOD JS并将您的Web应用程序与API服务器分开,或者将PHP用于两者。或者使用一台服务器进行Web界面和Web服务我的意思是有很多解决方案。

答案 4 :(得分:1)

只有知道PHP才有用。在共享服务器或免费的OpenShift PaaS层上创建一个具有RESTful API支持的社区需要5分钟时间进行测试和测试。发展。

WordPress + BBPress + WP RESTful API +自定义应用

前端社区演示:https://bbpress.orgy演示REST API演示:https://bbpress.org/wp-json/

第二个类似于URL的URL将与移动应用程序进行“同步”工作。

安装WordPress。然后安装:

  1. https://wordpress.org/plugins/rest-api/
  2. https://wordpress.org/plugins/rest-api-oauth1/
  3. https://wordpress.org/plugins/bbpress/
  4. 您的社区API服务器已在5分钟内准备就绪。 100%RESTful Web应用程序。阅读 -

    1. http://v2.wp-api.org/
    2. https://github.com/WP-API/OAuth1/blob/master/docs/basics/Signing.md
    3. http://wp-api.org/resources.html
    4. https://developer.wordpress.org/rest-api/
    5. https://bbpress.org/forums/topic-tag/api/
    6. 你想要一个Android应用程序。您将遵循以下指南:https://deliciousbrains.com/creating-mobile-app-wp-api-react-native/

      WordPress确实有移动应用 - https://apps.wordpress.com/mobile/&源代码 - https://github.com/wordpress-mobile/WordPress-Android

      您希望如何使用自己的应用,这是您的事。你可以修改它们。

      如何运作

      简而言之,Web应用程序具有类似JSON响应的现代“提要”。这是移动应用程序更新的一种方式。当移动应用程序是只读时,您实际上可以使用Feed。它们属于REST类别。这些新的JSON方式为读写提供了精细控制。休息写在他们的文档上。

      重要

      WordPress JetPack提供许多免费使用的功能,包括推送。当你有疑问时,请在WordPress官方论坛上询问。

      限制网络服务器软件的位置以限制速率以避免DDoS,使用Fail2Ban,iptables。不从Web服务器,监视器日志,使用缓存过滤是非常危险的。

答案 5 :(得分:1)

全部关于API集成和编程。在排序中,您需要创建一个中央服务器(托管和平衡)来提供数据并处理来自网站和移动应用程序的请求。

PHP的新兴技术(流行且适当)一步一步 1)创建 REST api 并使用 Laravel或Lumen 框架创建Oauth cerver。 除性能外,这些框架几乎相同。您可以创建良好的REST api并使用passport(Oauth)进行REST身份验证。 移动应用程序和您的网站都可以与REST api进行交互。 2)使用AngularJS 创建移动应用程序,并使用ionic,cordova或phonegap为android和ios构建。 您可以使用他们的SDK创建本机应用程序,但现在Javascript框架对于移动应用程序也足够强大。

对于实时同步和通知,您可以使用许多技术。在移动应用中,您可以运行服务以检查后台通知。

我最近开发了一个Web应用程序以及Android和iphone的移动应用程序。为此,我使用了Laravel 5.3(PHP),AngularJS和VueJS。

答案 6 :(得分:1)

我想指出为什么即使在给予赏金后你仍然没有对你的问题有任何好的答案。

  1. 您的问题的第一个问题是,您正在进行Facebook应用和Facebook网站同步的绝对错误假设。我总是在延迟收到手机短信。这意味着两者都在进行单独的API调用。
  2. 您的问题的第二个主要问题是您提出的问题已经多次回答。基本理念的look at these示例。
  3. 您表示您希望此信息从头开始构建网站,但希望效仿投资数百万美元的网站示例。他们的流量很大,请查看link。因此,他们不使用普通的技术来维持这一点,这不是一天建成的。你需要从头开始然后扩展。

答案 7 :(得分:-1)

简单易行:https://en.wikipedia.org/wiki/Comet_(programming)

Facebook和Gmail(据我所知)使用 Comet Technique 为他们的应用中的每个实时内容。它非常简单,让我们创建一个场景:

1-我们有一个文件,一直在寻找要更改的文件。 (的 notification.php

2-我们有一个网站( index.php )(连接到 notification.php

3-我们有一个Android应用程序(连接到 notification.php

4-我们有一个保存所有通知的文件。 (的 savenotification.php

因此,让我们在目录中创建一个名为 {userid} .txt 的文件。如果我将通过应用或网站创建通知,则这些通知将始终保存在 savenotification.php 。另一个重要的事情是,( savenotification.php )文件会在您创建通知时更改 {userid} .txt 文件。

与此同时,我们的应用和网站将始终收听 notification.php 以作出回应。

notification.php 的工作原理如下:

$openingTime = microtime();
$userid = $_SESSION['userId'];
while (true) {
    if (mtime($userid.'.txt') > $openingTime) { // check if file changed while we are in loop 
        echo json_encode('data' => 'New notification created.');
        break;
    }
    usleep(250);
}

这意味着如果您要在 savenotification.php 文件中创建通知,则应更改 {userid} .txt 文件,因为我们的 notification.php 在循环连续时不断寻找该文件中所做的任何更改。如果所做的任何更改意味着在应用或网站或任何来源创建通知。