2016-02-23 156 views
1

情境
我正在一个已经存在的网站中发挥作用。借助此功能,您可以从Google导入联系人。无论如何..我的老板告诉我,我必须使用任务队列从api获取联系人。这是因为有些人拥有OVER 9000(双关语)联系人,当这些人尝试导入联系人时,它会变得非常慢。使用Google任务队列从联系人获取联系人API

问题
如何使用任务队列来获取联系人并将这些数据1到1添加到数组中。

代码

$return = array(); 
    if (!empty($contacts['feed']['entry'])) { 
     foreach($contacts['feed']['entry'] as $contact) { 
     //retrieve Name and email address 
      $exploded = explode("/", $contact['id']['$t']); 

      $return[] = array (
       'firstname'=> $contact['gd$name']['gd$givenName']['$t'], 
       'lastname'=> $contact['gd$name']['gd$familyName']['$t'], 
       'email' => $contact['gd$email'][0]['address'], 
       'phoneNumber' => $contact['gd$phoneNumber'][0]['$t'], 
       'city' => $contact['gd$structuredPostalAddress'][0]['gd$city']['$t'], 
       'street' => $contact['gd$structuredPostalAddress'][0]['gd$street']['$t'], 
       'country' => $contact['gd$structuredPostalAddress'][0]['gd$country']['$t'], 
       'birthday' => $contact['gContact$birthday']['when'], 
       'id' => end($exploded), 
      ); 
     } 
    } 
    $google_contacts = $return; 
    unset($_SESSION['google_code']); 
} 
+0

你能更具体吗?什么是用例?用户发送请求导入联系人,系统从谷歌提取所有联系人并将其保存到存储? – pgiecek

回答

1

要记住任务队列的第一件事是,他们从那个叫他们要求独立执行的,所以你不能等待他们完成和数组返回用户 - 任务需要将其存储在某个地方或对其进行处理。

start_import.php:

$task = new PushTask('/do_import', $contacts); 
$task->add(); 
echo("Started import job!"); 

do_import.php:

if (!empty($contacts['feed']['entry'])) { 
    foreach($contacts['feed']['entry'] as $contact) { 
    //retrieve Name and email address 
    $exploded = explode("/", $contact['id']['$t']); 

    $return[] = array (
     'firstname'=> $contact['gd$name']['gd$givenName']['$t'], 
     'lastname'=> $contact['gd$name']['gd$familyName']['$t'], 
     'email' => $contact['gd$email'][0]['address'], 
     'phoneNumber' => $contact['gd$phoneNumber'][0]['$t'], 
     'city' => $contact['gd$structuredPostalAddress'][0]['gd$city']['$t'], 
     'street' => $contact['gd$structuredPostalAddress'][0]['gd$street']['$t'], 
     'country' => $contact['gd$structuredPostalAddress'][0]['gd$country']['$t'], 
     'birthday' => $contact['gContact$birthday']['when'], 
     'id' => end($exploded), 
    ); 
    } 
} 

// Do something with $return, like persist it to the Datastore or Cloud Storage... 

的app.yaml处理程序例如:

handlers: 
- url: /do_import 
    script: do_import.php 
- url: /start_import 
    script: start_import.php 

当然,它可以帮助阅读的文档的更多信息:

在PHP中使用推送队列 https://cloud.google.com/appengine/docs/php/taskqueue/overview-push

相关问题