Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mailchimp api v3:批处理订阅始终挂起_Php_Mailchimp_Php Curl - Fatal编程技术网

Php Mailchimp api v3:批处理订阅始终挂起

Php Mailchimp api v3:批处理订阅始终挂起,php,mailchimp,php-curl,Php,Mailchimp,Php Curl,我一直在尝试mailchimp API,它是v3。自从我使用php后,我在启动时遇到了一些麻烦,但现在一切都很顺利 我正在尝试一次性将多个订阅者添加到我的列表中 我看了看: 并尝试了以下代码: <?php $apiKey = "apikey"; $listId = "listid"; $memberId = md5(strtolower("mymail@gmail.com")); $dataCenter = substr($apiKey,strpos($apiKey,'-')+1);

我一直在尝试mailchimp API,它是v3。自从我使用php后,我在启动时遇到了一些麻烦,但现在一切都很顺利

我正在尝试一次性将多个订阅者添加到我的列表中

我看了看:

并尝试了以下代码:

<?php

$apiKey = "apikey";
$listId = "listid";

$memberId = md5(strtolower("mymail@gmail.com"));
$dataCenter = substr($apiKey,strpos($apiKey,'-')+1);
$url = 'https://'. $dataCenter . '.api.mailchimp.com/3.0/lists/' . $listId .'/members';
$batchurl = 'https://'. $dataCenter . '.api.mailchimp.com/3.0/batches';
$filename = "test_csv.csv";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
$user_info = str_getcsv($contents, ";");
$ch = curl_init($batchurl);
curl_setopt($ch, CURLOPT_USERPWD, 'apikey:'.$apiKey);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
$array = array();
for ($i = 1; $user_info[$i]; $i++) {

    $array[] = array(

            "method" => "PUT",
            "path" => 'lists/'.$listId.'members/'.md5(trim($user_info[$i])),
            "body" => '{"email_address" => '.trim($user_info[$i]).',"status" => "subscribed"}'
        );
}
$bck = '{"operations": '.json_encode($array).'}' ;

curl_setopt($ch, CURLOPT_POSTFIELDS, $bck);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
遗憾的是,我不完全理解,为什么它还悬而未决?我试着在生成的id上获取请求,遗憾的是总是说“待定”,不管我之前等待了多长时间

有人遇到过同样的问题吗?如何使上述代码正常工作

提前谢谢


编辑1:根据TooMuchPete给出的第一个答案进行更正。

看起来您在路径中添加了太多信息。从您链接的文档中,它们的路径在
/3.0/
之后开始,而您的路径似乎以
http://
开始。看起来您在路径中放置了太多信息。从您链接的文档中,它们的路径从
/3.0/
开始,而您的路径似乎从
http://
开始,因此,我发送了一份关于mailchimp API支持的查询。从技术上来说,您得到的响应是正常的

您应该使用使用get请求返回的批次id轮询批次的url

{“id”:“af07a55fea”,…

然后在状态更改时取消轮询。
{“id”:“af07a55fea”,“status”:“finished”,


为了更加清晰,请参阅批次API文档。请确保参考批次API中get请求的“读取”选项卡。

因此,我发送了对mailchimp API支持的查询。您得到的响应在技术上是正常的

您应该使用使用get请求返回的批次id轮询批次的url

{“id”:“af07a55fea”,…

然后在状态更改时取消轮询。
{“id”:“af07a55fea”,“status”:“finished”,



为更清晰起见,请参阅Batch API文档。请确保参考批次API的get请求的“读取”选项卡。

编辑我的代码,结果更平滑,但迄今为止结果仍没有变化。感谢您指出此错误!编辑我的代码,结果更平滑,但迄今为止结果仍没有变化。感谢指出此错误!顺便说一句,这些一次运行一个,因此如果您发送了一组,它们都将处于挂起状态,直到轮到它们为止。如果您没有看到
pending
的任何翻转,您应该与客户支持联系,看看发生了什么。我正在node中执行一个非常类似的操作,并且遇到了相同的问题问题。如果你注意到总的_操作是0,我不知道为什么。但是我得到了同样的结果。我还在成员之后添加了电子邮件地址的md5哈希,这没有什么区别。我认为总的_操作:0意味着我们不被允许进行操作,这可以解释我们遇到的麻烦,但这只是一个问题ory。到目前为止,我的操作也没有启动。作为一个临时修复,我能够在阵列上的forEach循环中发出单个请求。只需使用超时函数之类的功能,以确保不会收到一堆超时请求。这既不理想也不好,但至少目前填充了我的列表。仍然对se感兴趣如果有人能帮你解决问题。@LamaDelRay你认为这是MailChimp的问题吗?我也有同样的问题。顺便说一句,这些问题一次只能解决一个问题,所以如果你有一堆问题被发送进来,他们都会被挂起,直到轮到他们为止。如果你没有看到任何关于
挂起的问题,你应该ld联系客户支持,看看发生了什么。我在node中做了一个非常类似的操作,我遇到了相同的问题。如果您注意到总操作数为0,我不知道为什么。但是我得到了同样的结果。我还在成员之后添加了电子邮件地址的md5哈希,这没有什么区别。我认为总操作数为0定量:0表示不允许我们进行操作,这可以解释我们遇到的问题,但这只是一个理论。到目前为止,我的操作也不会启动。还有一个临时修复,我可以在阵列上的forEach循环中发出单个请求。只需使用超时函数之类的函数来确保不会得到b取消对超时请求的清除。这既不理想也不是很好的做法,但至少现在我的列表已经填充完毕。仍然有兴趣看看是否有人能帮你解决问题。@LamaDelRay你认为这是MailChimp端的问题吗?我也有同样的问题。所以我应该进行异步检查以确保发生了什么事情?谢谢answ呃,无论如何,我会试试这种方法!我根据您链接的内容成功地使它工作。非常感谢您的时间!@mikedklein是否有一种快速方法可以从以前发送的批处理请求(类似于命令)中获取id?@mikedklein您可以发布一个在PHP中轮询url的示例吗?@goodEgg批处理的id会在响应中返回。我可以尝试放置一些用于轮询的PHP代码,但我认为应该有更精通PHP的人在Node中执行此操作。所以我应该进行异步检查以确保发生了什么事情。无论如何,感谢您的回答,我将试试看!我根据你链接的内容成功地完成了。非常感谢你抽出时间!@mikedklein有没有快速的方法从之前发送的批处理请求(类似于命令)中获取id?@mikedklein您可以发布一个在PHP中轮询url的示例吗?@goodEgg批处理的id在响应中返回。我可以尝试放置一些用于轮询的PHP代码,但我认为应该有更精通PHP的人在Node中这样做。
string(624) "{"id":"af07a55fea","status":"pending","total_operations":0,"finished_operations":0,"errored_operations":0,"submitted_at":"2016-05-09T14:46:21+00:00","completed_at":"","response_body_url":"","_links":[{"rel":"parent","href":"https://us13.api.mailchimp.com/3.0/batches","method":"GET","targetSchema":"https://us13.api.mailchimp.com/schema/3.0/Batches/Collection.json","schema":"https://us13.api.mailchimp.com/schema/3.0/CollectionLinks/Batches.json"},{"rel":"self","href":"https://us13.api.mailchimp.com/3.0/batches/af07a55fea","method":"GET","targetSchema":"https://us13.api.mailchimp.com/schema/3.0/Batches/Instance.json"}]}"