コード例 #1
0
function mx_uploadqueue()
{
    global $s3, $sqs, $mxuser, $maxhandle;
    if ($mxuser && $mxuser->id) {
        error_log('Access Error.');
        die;
    }
    ini_set('error_log', '/var/log/mxupload-error.log');
    error_log('start wait.');
    while (--$maxhandle > 0) {
        $mxuser = null;
        $res = $sqs->receive_message(MXUPLOADQUEUEURL, array('VisibilityTimeout' => DEBUG ? 15 : 60, 'MaxNumberOfMessages' => 1));
        if ($res->isOK()) {
            $msgcnt = 0;
            if ($msg = $res->body->Message(0)) {
                $msgcnt++;
                //print_r('msg: '.$msg->Body);
                $req = unserialize($msg->Body);
                error_log(print_r($req, true));
                $ffile = $req['ffile'];
                $media = $req['media'];
                $userid = $req['userid'];
                $ffmt = $req['ffmt'];
                $rescan = $req['rescan'];
                $download = $req['download'];
                $fwave = '';
                $fpreview = '';
                $media->owner_id = $userid;
                if (!$userid) {
                    error_log('No USERID in message...');
                } else {
                    $mxuser = new MXUser($userid);
                    if (!$mxuser->id) {
                        error_log('Can\'t switch to user ' . $userid . '. EXITING.');
                        die;
                    }
                    error_log("I am now: " . $mxuser->getname());
                    //error_log('mxuser='******'';
                    $fpic = '';
                    if (file_exists($ffile)) {
                        error_log('uploading media...');
                        $ret = $mxuser->uploadmedia($media->id, $media->filename, $media->title, $media->type, $media->description, $media->completion, '', '');
                        if (!array_key_exists('error', $ret)) {
                            // set to ready OR restore previous media status
                            //if ($media->status<MXMEDIAREADY) $mxuser->setmediastatus($media->id,MXMEDIAREADY);
                            //else $mxuser->setmediastatus($media->id, $media->status);
                            @unlink($ffile);
                            error_log('OK');
                            $mxuser->rescanmedia($media);
                            // send to rescan queue...
                        } else {
                            error_log($ret['error']);
                        }
                    } else {
                        error_log('file ' . $ffile . ' missing...');
                    }
                }
                $sqs->delete_message(MXUPLOADQUEUEURL, $msg->ReceiptHandle);
                $sqs->delete_message(MXUPLOADQUEUEURL, $msg->ReceiptHandle);
            }
            if (!$msgcnt) {
                sleep(15);
            }
        } else {
            // receive message error
            error_log($res);
            sleep(60);
        }
    }
    // while true
    error_log('end wait.');
}