通过php和imagick创建图像时执行超时错误

时间:2012-03-14 05:17:17

标签: php imagick

我需要从服务器端创建验证码。我使用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 );

错误日志报告“最后一行超过30秒的最长执行时间”

$Imagick->drawImage( $ImagickDraw ). 

有没有人遇到过这样的问题?我使用php5.2.17,imagick模块2.3.0和Apache 2.2.15。

1 个答案:

答案 0 :(得分:1)

这意味着您的主机正在终止服务器进程(可能在执行30秒后,这将是他们的限制)。您的脚本应用了一些过滤器,而在非常大的图像上,这肯定需要30秒以上。考虑限制图像分辨率。