Многократная загрузка Google Contacts Api XML?

Я занимаюсь разработкой приложения на PHP, которое должно загрузить 100 контактов в первый раз, я разработал базовое приложение для загрузки контакта, но оно занимает около 1,5 секунды обработать запрос:

        $before = microtime(true);
$req = new Google_Http_Request("https://google.com/m8/feeds/contacts/" . $user_email . "/full/");
$req->setRequestMethod("POST");
$req->setPostBody($contact_xml);
$req->setRequestHeaders(array('content-length' => strlen($contact_xml), 'GData-Version' => '3.0', 'content-type' => 'application/atom+xml; charset=UTF-8; type=feed'));

$submit = $this->_gclient->getAuth()->authenticatedRequest($req);
$sub_response = $submit->getResponseBody();
$parsed = simplexml_load_string($sub_response);
$client_id = explode("base/", $parsed->id);

//Profiling
$after = microtime(true);

Я пытался присоединиться к моей записи дважды или раз, когда мне было нужно, но это не работает:

$contact_xml.="<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'
xmlns:gd='http://schemas.google.com/g/2005'
xmlns:gContact='http://schemas.google.com/contact/2008'>
<atom:category scheme='http://schemas.google.com/g/2005#kind'
term='http://schemas.google.com/contact/2008#contact'/>
...
<gContact:groupMembershipInfo deleted='false'
href='http://www.google.com/m8/feeds/groups/".$user_email."/base/6'/>
</atom:entry>

И единственное, что я получаю от Google:

 [1] => SimpleXMLElement Object
(
[error] => SimpleXMLElement Object
(
[domain] => GData
[code] => parseError
[internalReason] => Parse Error
)

)

Что похоже на …

  1. Я делаю что-то не так, Google дает любой вид асинхронного запроса?
  2. Можно ли даже сделать многократную загрузку записи контакта Google?
  3. Если я делаю цикл с отдельной функцией загрузки, это занимает слишком много времени для 100 контактов, вот причина вопроса.

Чем ты!

0

Решение

Наконец, благодаря DalmTo, пакетная функциональность GData отлично вписывается в эту проблему.
Вот пример канала, который вам нужно создать, чтобы использовать пакетные функции:

<feed xmlns='http://www.w3.org/2005/Atom'
xmlns:gContact='http://schemas.google.com/contact/2008'
xmlns:gd='http://schemas.google.com/g/2005'
xmlns:batch='http://schemas.google.com/gdata/batch'>
<entry>
<batch:id>create</batch:id>
<batch:operation type='insert'/>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2008#contact'/>
<gd:name>
<gd:fullName>Example example</gd:fullName>
<gd:givenName>Example</gd:givenName>
<gd:familyName>Example</gd:familyName>
</gd:name>
<gd:email rel='http://schemas.google.com/g/2005#home' address='[email protected]' primary='true'/>
</entry></feed>

тогда вам просто нужно скопировать вашу запись с операцией, которую вы должны зациклить.
Просто для того, чтобы получить контакты, созданные в папке «Входящие», необходимо добавить:

<gContact:groupMembershipInfo deleted = 'false' href = 'http://www.google.com/m8/feeds/groups/" . $user_email . "/base/6' />

Запрос в Google будет выглядеть так:

$req = new Google_Http_Request("https://www.google.com/m8/feeds/contacts/" . $user_email . "/full/batch/");

Надеюсь, это кому-нибудь поможет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]