PHP Extension
PHP Extension
Async Methods Returning an Object
See more Async Examples
Demonstrates how to call an asynchronous method that returns an object. This example reads email from a POP3 server using the Async versions of the Chilkat methods.Chilkat PHP Extension Downloads
<?php
include("chilkat.php");
$success = false;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
$success = false;
$mailman = new CkMailMan();
// Set the POP3 server's hostname
$mailman->put_MailHost('pop.example.com');
// Set the POP3 login/password and any other requirements..
$mailman->put_PopUsername('myLogin');
$mailman->put_PopPassword('myPassword');
$mailman->put_PopSsl(true);
$mailman->put_MailPort(995);
// Connect to the POP3 server:
// task is a CkTask
$task = $mailman->Pop3BeginSessionAsync();
if ($mailman->get_LastMethodSuccess() == false) {
print $mailman->lastErrorText() . "\n";
exit;
}
// Start the background task.
$success = $task->Run();
if (!$success) {
print $task->lastErrorText() . "\n";
exit;
}
// Wait for the POP3 connect task to finish.
// The true/false returned by Wait applies to the Wait method call, not the task.
$maxWaitMs = 30000;
$success = $task->Wait($maxWaitMs);
if (!$success or ($task->get_StatusInt() != 7) or ($task->get_TaskSuccess() != true)) {
if (!$success) {
// The task.LastErrorText applies to the Wait method call.
print $task->lastErrorText() . "\n";
}
else {
// The ResultErrorText applies to the underlying task method call (i.e. the Pop3BeginSession)
print $task->status() . "\n";
print $task->resultErrorText() . "\n";
}
exit;
}
// Get the number of messages in the mailbox.
// task is a CkTask
$task = $mailman->GetMailboxCountAsync();
// To keep the example short, we'll skip handling failures.
// The failures would be handled in the same way as shown above.
$success = $task->Run();
$success = $task->Wait($maxWaitMs);
$numMessages = $task->GetResultInt();
if ($numMessages == 0) {
exit;
}
$email = new CkEmail();
for ($i = 1; $i <= $numMessages; $i++) {
// task is a CkTask
$task = $mailman->FetchByMsgnumAsync($i);
if ($mailman->get_LastMethodSuccess() == false) {
print $mailman->lastErrorText() . "\n";
exit;
}
$success = $task->Run();
$success = $task->Wait($maxWaitMs);
if (!$success or ($task->get_StatusInt() != 7) or ($task->get_TaskSuccess() != true)) {
if (!$success) {
// The task.LastErrorText applies to the Wait method call.
print $task->lastErrorText() . "\n";
}
else {
// The ResultErrorText applies to the underlying task method call (i.e. the FetchByMsgnum)
print $task->status() . "\n";
print $task->resultErrorText() . "\n";
}
exit;
}
// Each Chilkat object that can be a return value of an asynchronous task will
// have a method named LoadTaskResult. The object returned in the underlying
// asynchronous method call is retrieved by calling LoadTaskResult.
// To say it another way: The application will provide a pre-existing object of
// the desired return type (in this case it is an email object). This object is
// loaded by calling LoadTaskResult.
$success = $email->LoadTaskResult($task);
if (!$success) {
print $email->lastErrorText() . "\n";
exit;
}
else {
print $email->from() . ': ' . $email->subject() . '\n' . "\n";
}
}
?>