在PHP中同步2个数据结构的最佳方法是什么?

时间:2009-06-22 17:13:00

标签: php mysql arrays youtube

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

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

即。 php / mysql app< - > 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上的视频,则无法删除?

1 个答案:

答案 0 :(得分: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
}