多次上传 Google 联系人 Api XML?
Multiple upload 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
)
)
这就像...
- 我是不是做错了什么,Google 是否给任何类型的异步请求?
- 甚至可以多次上传 google 联系人条目吗?
- 如果我使用单独的上传功能进行循环,那么对于 100 个联系人的数量来说需要太长时间,这就是问题的原因。
比不过你!
最后感谢 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='liz@gmail.com' 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/");
我希望这对某人有所帮助。
我正在 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
)
)
这就像...
- 我是不是做错了什么,Google 是否给任何类型的异步请求?
- 甚至可以多次上传 google 联系人条目吗?
- 如果我使用单独的上传功能进行循环,那么对于 100 个联系人的数量来说需要太长时间,这就是问题的原因。
比不过你!
最后感谢 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='liz@gmail.com' 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/");
我希望这对某人有所帮助。