【发布时间】:2012-10-18 15:25:22
【问题描述】:
我需要从服务器端创建验证码。我使用 php+imagick 扩展。有时我在创建图像时会发现 500 错误,尽管它大部分时间都可以正常工作。 代码如下:
$Imagick = new Imagick();
$Imagick->newImage( $w, $h, $bg );
$ImagickDraw = new ImagickDraw();
$ImagickDraw->setFont(...);
$ImagickDraw->setFontSize( ... );
$ImagickDraw->setFillColor(...);
$Imagick->borderImage('black', 1, 1);
$Imagick->annotateImage($ImagickDraw, 12, 34, $angles[rand(0, count($angles)-1)], $code);
$Imagick->swirlImage( 10 );
for($i=0; $i<20; $i++) {
$ImagickDraw->line( mt_rand( 1, $w-1 ), mt_rand(1, $h-1), mt_rand(1, $w-1), mt_rand(1, $h-1) );
}
for ($i=0; $i<30; $i++) {
$ImagickDraw->color( mt_rand(1, $w-1), mt_rand(1, $h-1), 0);
}
$Imagick->drawImage( $ImagickDraw );
错误日志在最后一行报告“Maximum execution time of 30 seconds exceeded”
$Imagick->drawImage( $ImagickDraw ).
有人遇到过这样的问题吗?我使用 php5.2.17,imagick 模块 2.3.0 和 Apache 2.2.15。
【问题讨论】:
-
嗯,它超时的图像有多大?
-
这段代码是在循环中还是只生成一张图片?
-
只有一张图片,当它工作时,生成的图片大约是1-2k。图片为 100x40 像素