Я застрял в этой проблеме и не могу понять, как ее решить.Как визуализировать представление, когда запрос cURL (Mailjet) завершен?
Я использую CakePhp 2.x в качестве рамки и Mailjet для отправки писем и получения их статуса. (Mailjet является французским конкурентом Mailchimp). Я хочу показать в своем индексе все кампании, отправленные через Mailjet.
В моей EmailController:
public function index() {
$clubCampaigns = $this->getMJAllCampaigns('[email protected]');
$viewCampaigns = array();
foreach ($clubCampaigns as $key => $Campaign) {
$viewCampaigns[$key]['Subject'] = $Campaign->Subject;
$viewCampaigns[$key]['Campaign'] = $this->getMJCampaign($Campaign->ID);
$viewCampaigns[$key]['Messages'] = $this->getMJMessageSentStatistics($Campaign->ID);
}
$this->set('viewCampaigns', $viewCampaigns);
return $this->render();
}
Я получаю кампании по электронной почте с помощью этой функции.
protected function getMJAllCampaigns($senderID = null, $fromTS = null, $toTS = null) {
/* @render none */
$this->autoRender = false;
if($senderID == null || $senderID == ''){
throw new Exception('$SenderID is NULL : Cannot request Mailjet API');
return false;
}
if($toTS == null){
$toTS = new DateTime();
}
if($fromTS == null){
$fromTS = new DateTime();
$fromTS->sub(new DateInterval("P1W"));
}
/* Create Mailjet Object */
$Mailjet = new Mailjet();
$params = array (
'Limit' => 1000,
'FromID' => $SenderID,
'From' => $SenderID,
'FromTS' => $fromTS->format(DATE_RFC3339), //Format T RFC 3339 DateTime
'ToTS' => $toTS->format(DATE_RFC3339) //Format T RFC 3339 DateTime
);
$MJCampaign = $Mailjet->campaign($params);
/* Parsing cURL response */
$countCampaign = $MJCampaign->Count;
$campaigns = $MJCampaign->Data;
if($countCampaign == 0 || $campaigns == null){
//throw new Exception('No campaign found - Break');
$campaigns = false;
}
return $campaigns;
}
Я использую MailJet объекта, выданную Mailjet API. Этот API является скамейкой функций PHP, создающих cURL resquest.
Я знаю, что этот код в состоянии, функциональный.
Потому что когда я var_dump($clubCampaigns); die;
, он отображает ожидаемый массив.
Но когда я пытаюсь запустить его «естественным», вид не визуализируется, загружая время, установленное в max_execution_time
в моей php.ini
...
Я думаю, что CakePHP пытается выполнить foreach
и сделать до завершения $this->getMJAllCampaigns
.
Так что мой вопрос:
Как я могу сказать, мой Еогеасп начать только тогда, когда мой $this->getMJAllCampaigns()
полностью сделан?
Спасибо за ваше время.
я изменить способ доступа к МДж. Мои методы были способом тяжелого ... Большое спасибо @guillaume –