【问题标题】:What's the best way to sync 2 data structures in PHP?在 PHP 中同步 2 个数据结构的最佳方法是什么?
【发布时间】:2009-06-22 17:12:59
【问题描述】:

我正在尝试将从 Youtube 的特定用户检索到的一堆视频同步到视频 ID 的数据库表。

这是因为 YouTube 不允许向视频添加元信息。因此,我在我的服务器上创建了一个视频表,并希望同步 videoids。

即php/mysql 应用程序 youtube

youtube视频的数据结构如下:

foreach ($feed as $entry) {
  print "<p>";
  print $entry->getVideoId();
  print "</p>";
}

我的数据库是这样的:

$rs->MoveFirst();
while (!$rs->EOF) {
  print "<p>";
  print $rs->fields['yt_id'];
  print "</p>";
  $rs->MoveNext();
}

您知道如何同步这些数据,以便:

  1. 每当用户在 youtube 上上传新视频时,我都可以调用同步函数来检索最新视频并将其添加到 mysql 数据库中?
  2. 但是,如果用户删除了 youtube 上的视频,就没有删除?

【问题讨论】:

    标签: php mysql arrays youtube


    【解决方案1】:

    从两个位置获取 ID 后,您可以使用 array_diff() 比较 ID,例如:

    //build array of video IDs in YouTube
    $arYT = array();
    foreach ($feed as $entry) {
        $arYT[] = $entry->getVideoId();
    }
    
    //build array of video IDs in local DB
    $arDB = array();
    $rs->MoveFirst();
    while (!$rs->EOF) {
      $arDB[] = $rs->fields['yt_id'];
      $rs->MoveNext();
    }
    
    //to download, we want IDs which are in YouTube but not in the local Db
    $idsToDownload = array_diff($arYT, $arDB);
    
    //to delete, we want IDs which are in the local DB but not in YouTube
    $idsToDelete = array_diff($arDB, $arYT);
    

    然后你可以这样做:

    //download new videos
    foreach ($idsToDownload as $id) {
       //get video info for video $id and put into local db    
    }
    
    //delete deleted videos
    foreach ($idsToDelete as $id) {
        //delete $id from local DB
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 2017-01-08
      • 2018-02-16
      相关资源
      最近更新 更多