通过php和imagick创建图像时出现排泄超时错误


Excution timeout error while create image by php and imagick

我需要从服务器端创建captcha。我使用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。

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