visavi/openrtb 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

visavi/openrtb

Composer 安装命令:

composer require visavi/openrtb

包简介

OpenRTB specification

关键字:

README 文档

README

iab, RTB Project, OpenRTB Specification 2.5

Example

$imp = new Imp();
$imp->setId('1');

$video = new Video();
$video->setMimes([
        'video/mp4',
        'application/x-shockwave-flash',
        'application/javascript',
        'video/webm',
        'video/mpg',
    ])
    ->setMinduration(1)
    ->setMaxduration(120)
    ->setProtocols([2, 3, 5, 6, 7, 8])
    ->setW(576)
    ->setH(320)
    ->setLinearity(2)
    ->setSkip(1)
    ->setSkipmin(10)
    ->setSkipafter(10)
    ->setSequence(1)
    ->setMaxextended(-1)
    ->setApi([1,2])
    ->setPlacement(3);

$deals = new Deal();
$deals->setId('id')
    ->setBidfloor(120)
    ->setBidfloorcur('RUB')
    ->setAt(3);

$pmp = new Pmp();
$pmp->setPrivate_auction(0)
    ->addDeals($deals);

$imp->setVideo($video)
    ->setBidfloor(100)
    ->setBidfloorcur('RUB')
    ->setSecure(1)
    ->setPmp($pmp);

$site = new Site();
$site->setId('1234')
    ->setDomain('test.ru')
    ->setCat([
        'IAB0',
        'IAB0-0',
    ])
    ->setPublisher((new Publisher())->setId('test'))
    ->setPage('https://test.ru');

$geo = new Geo();
$geo->setLat(47.2361)
    ->setLon(39.7189)
    ->setType(2)
    ->setCountry('RUS')
    ->setRegion('RU-ROS')
    ->setCity('Rostov-on-Don')
    ->setZip('344000');

$device = new Device();
$device->setUa('Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0')
    ->setGeo($geo)
    ->setIp('127.0.0.1')
    ->setDevicetype(2)
    ->setMake('unknown')
    ->setModel('unknown')
    ->setOs('Windows')
    ->setLanguage('ru');

$user = new User();
$user->setId('test1')
    ->setBuyeruid('xxxxxxxxx');

$bidRequest = new BidRequest();
$bidRequest
    ->setId('test-3')
    ->addImp($imp)
    ->setSite($site)
    ->setDevice($device)
    ->setUser($user)
    ->setAt(2)
    ->setTmax(300)
    ->setCur(['RUB']);

$request = $bidRequest->getBidRequest();

Response

$object = new BidResponse();

foreach ($responses as $response) {
    /** @var BidResponse $result */
    $result = Hydrator::hydrate(json_decode($response, true), $object);

    /** @var Seatbid $bid */
    $seatBid = $result->getSeatbid()->first();

    /** @var Bid $bid */
    $bid = $seatBid->getBid()->first();

    $nurls[] = $bid->getNurl();
}

// or
$result = json_decode($response, true);
$nurl = $result['seatbid'][0]['bid'][0]['nurl'] ?? null;

Async request

$bidders = [
    'segmento' => 'https://bider1',
    'weborama' => 'https://bider2',
    'otm'      => 'https://bider3',
];

$promises = (function () use ($bidders) {
    foreach ($bidders as $service => $bidder) {
        $buyer   = $this->getBuyer($service);
        $request = $this->buildRequest($buyer);

        if (!$request) {
            continue;
        }

        yield $this->client->requestAsync('POST', $bidder, ['body' => $request]);
    }
})();

$responses = [];

if (!$promises) {
    return '';
}

$each = new EachPromise($promises, [
    'concurrency' => 4,
    'fulfilled' => static function (ResponseInterface $response) use (&$responses) {

        $content = (string) $response->getBody();

        if ($content && 200 === $response->getStatusCode()) {
            $responses[] = $content;
        }
    },
]);

$each->promise()->wait();

var_dump($responses);

Install

composer require visavi/openrtb

visavi/openrtb 适用场景与选型建议

visavi/openrtb 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 8.62k 次下载、GitHub Stars 达 5, 最近一次更新时间为 2019 年 10 月 22 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「openrtb」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 visavi/openrtb 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 visavi/openrtb 我们能提供哪些服务?
定制开发 / 二次开发

基于 visavi/openrtb 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

与 visavi/openrtb 相关的其它包

同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:

统计信息

  • 总下载量: 8.62k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 3
  • Forks: 7
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-2.0
  • 更新时间: 2019-10-22