小编alg*_*thm的帖子

使用Zend Mail发送邮件时出现问题?

我正在尝试用ZendMail发送一封电子邮件(这个简单的脚本总结了它)

<?php
require_once 'Zend/Mail.php';

$mail = new Zend_Mail();
$mail->setBodyText('My Nice Test Text');
$mail->setBodyHtml('My Nice Test Text');
$mail->setFrom('test@example.com', 'Mr Example');
$mail->addTo('contact@mypage.com', 'Mr Test');
$mail->setSubject('TestSubject');
$mail->send();
?>
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个堆栈跟踪:

Fatal error:
Uncaught exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php:137

Stack trace:
#0 /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail()
#1 /usr/share/php/libzend-framework-php/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#2 /var/www/hexreaction/mail/index2.php(11): Zend_Mail->send()
#3 {main} thrown in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php on line 137
Run Code Online (Sandbox Code Playgroud)

编辑:

我不是试图使用SMTP发送我的电子邮件而且我的问题不那么可怕,但仍然存在问题.

<?php
require_once 'Zend/Mail.php';
$config = array('auth' => 'login',
                'username' => 'contact@mypage.com',
                'password' => 'secretpass');

$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); …
Run Code Online (Sandbox Code Playgroud)

php zend-framework zend-mail

16
推荐指数
1
解决办法
4万
查看次数

内存泄漏?!垃圾收集器在'array_map'中使用'create_function'时是否正确?

我在StackOverflow上找到了以下解决方案,以从对象数组中获取特定对象属性的数组:PHP - 从对象数组中提取属性

建议的解决方案是使用array_mapand within创建一个函数,create_function如下所示:

$catIds = array_map(create_function('$o', 'return $o->id;'), $objects);
Run Code Online (Sandbox Code Playgroud)

会发生什么?:array_map在这种情况下,每个数组元素都会运行一个stdClass对象.首先,它创建一个这样的函数:

function($o) {
    return $o->id;
}
Run Code Online (Sandbox Code Playgroud)

其次,它在当前迭代中为对象调用此函数.它的工作原理与它类似的解决方案几乎相同:

$catIds = array_map(function($o) { return $o->id; }, $objects);
Run Code Online (Sandbox Code Playgroud)

但是这个解决方案只能在PHP版本> = 5.3中运行,因为它使用的Closure概念=> http://php.net/manual/de/class.closure.php

现在真正的问题:

第一个解决方案create_function增加了内存,因为创建的函数将被写入内存而不会被重用或销毁.在它的第二个解决方案中Closure.

因此,解决方案给出了相同的结果,但在内存方面有不同的行为.

以下示例:

// following array is given
$objects = array (
    [0] => stdClass (
        [id] => 1
    ),
    [1] => stdClass (
        [id] => 2
    ),
    [2] => stdClass (
        [id] => …
Run Code Online (Sandbox Code Playgroud)

php garbage-collection memory-leaks create-function array-map

4
推荐指数
1
解决办法
1712
查看次数