我已经为档案写了一个包装班:
class gearman {
private $server_ip = '127.0.0.1';
private $server_port = '4730';
public function registerWorker($qName,$function){ // register function
if (!($qName && $function)) return false;
$qWorker = new GearmanWorker();
$qWorker->addServer($this->$server_ip, $this->$server_port); // register worker in server
$qWorker->addFunction($this->getQName($qName), $function);
return $qWorker;
}
public function registerClient(){ //register client
$qClient = new GearmanClient();
$qClient->addServer($this->$server_ip, $this->$server_port); // send job to server
return $qClient;
}
public function doBg($function,$workload,$qClient = null){
if (!$function) return false;
if (!$qClient)
{
$qClient = $this->registerClient();
}
return $qClient->doBackground($this->getQName($function), json_encode($workload));
}
}
这些只是我班级的一部分。我还有另一堂课可以上传。这只是我将图像保存在服务器中的部分:
public function resize( $x, $y )
{
$new = imagecreatetruecolor($x, $y);
imagealphablending($new, false);
imagesavealpha($new, true);
imagecopyresampled($new, $this->image, 0, 0, 0, 0, $x, $y, imagesx($this->image), imagesy($this->image));
$this->image = $new;
}
public function save( $location, $type='', $quality=100 )
{
$type = ( $type == '' ) ? $this->type : $type;
if( $type == IMAGETYPE_JPEG )
{
if (!imagejpeg( $this->image, $location, $quality)) { // error happened
return false;
}
}
elseif( $type == IMAGETYPE_GIF )
{
if (!imagegif( $this->image, $location )) {
return false;
}
}
elseif( $type == IMAGETYPE_PNG )
{
if (!imagepng( $this->image, $location )) {
return false;
}
}
return true;
}
我应该在上传构造函数中实例化齿轮吗?我应该把工人放在哪里?我不知道将Gearman Client在哪里完成上传或调整大小的任务。
如果有人能阐明这个主题。
使用ImageMagick在Gearman网站上有一个示例脚本。您可能想看看他们是如何完成的。