PHP」カテゴリーアーカイブ

Travis-CIでhhvmのテストが失敗するようになっていたようだ

投稿日:

気軽にCIを試せるぞ!!というわけでGitHubではTravis CIを使っているのですが、なんとなく昔作ったリポジトリでbuildしてみたら見事にコケました。
その時出たメッセージがこちら。

HHVM is no longer supported on Ubuntu Precise. Please consider using Trusty with `dist: trusty`.

HHVMは、Ubuntu Preciseではサポートされなくなりました。dist:trusty にてTrustyを使用することを検討してください。
※Google翻訳によるとこんな感じ

このメッセージを読む限り、hhvmの時は.travis.ymldist: trustyを追加すれば良さそうです。ところがはて、この条件の時はこの設定を読み込むみたいなのってどうするんだろうとなりましてググったら以下の情報が出てきました。

こちらを参考に書き直した.travis.ymlがこちらになります。
続きを読んでみようかな…

【PHP】URLを渡すとヘッダー情報を見てステータスを返すクラスを書いた

投稿日:

ちょっと前に、【PHP】URLを渡すとヘッダー情報を見てステータスを返すやつ書いた | Shimabox Blogを書いたのですがせっかくなのでクラスにしてみました。

ソースはこちら

インストール

$ composer require shimabox/url-status

使い方

<?php
require_once 'vendor/autoload.php';

$ret = \SMB\UrlStatus::get('https://google.com/webhp?gl=us&hl=en&gws_rd=cr');

$ret->targetUrl();      // => 'https://google.com/webhp?gl=us&hl=en&gws_rd=cr'
$ret->reachedUrl();     // => 'https://www.google.com/webhp?gl=us&hl=en&gws_rd=cr'
$ret->isValidUrl();     // => true
$ret->redirectedUrls(); // => ['https://www.google.com/webhp?gl=us&hl=en&gws_rd=cr']
$ret->redirectedCode(); // => [301]
$ret->code();           // => 200
$ret->is200();          // => true

// for the POST method
$data = http_build_query(['foo' => 'bar', 'hoge' => 'piyo']);
$header = [
    'Content-Type: application/x-www-form-urlencoded',
    'Content-Length: ' . strlen($data)
];
$options = [
    'http' => [
        'method'  => 'POST',
        'header'  => implode("\r\n", $header),
        'content' => $data
    ]
];

$ret = \SMB\UrlStatus::get('http://localhost/post.php', $options);

関数版との違い

  • インターフェイス( 第一引数にURL, 第二引数にstream_context作成用の値 )は変わっていません
  • stdClassを返していたのを自身\SMB\UrlStatusを返すように変更
    • 返されたプロパティを変更出来ないように
  • isxxx()をマジックメソッドで用意
    • is{数値3桁}()
    • /\Ais(\d{3})\z/
    • is200()とか、is503()とか

こんな感じです。雨が続いて憂鬱です。

【PHP】URLを渡すとヘッダー情報を見てステータスを返すやつ書いた

投稿日:

例えば、あのURLはきちんと301されているだろうかとか、リンク先とか画像が404になっていないだろうかとか気になって夜も眠れない日は誰にでもあるはずです。唐突。

そんなわけで簡単にではありますがURLを渡すとヘッダー情報(get_headers)を見て、参照先URLのステータスを返す関数を書いてみました。
※ タイトルはキリッとしてますが大したものじゃありません
http://jp2.php.net/manual/ja/function.get-headers.php#119497 のほぼ完コピです。すいません。

2017/08/16 追記 クラスにしてみました

【PHP】URLを渡すとヘッダー情報を見てステータスを返すクラスを書いた | Shimabox Blog

ソースはこちら。

続きを読んでみようかな…

php-webdriverを使って指定した要素のキャプチャを撮る

投稿日:

朝は人間にとってゴールデンタイムと呼ばれているようにセミにとってもそれはゴールデンタイムのようです。

前回、php-webdriverを使ってフルスクリーンのキャプチャを撮る ことに成功したのですが、そこに至るまでにちょっと試してみたことがあって、それも無事解決したのでは?というお話を書きます。
※後述の課題点にあるようにすべて解決というわけではないです

要素のキャプチャ

それは何かというと、要素を指定した場合その部分だけのキャプチャを撮るというものです。
※この記事のサムネイル画像は、google検索結果画面の#nav > tbody部分のキャプチャです

そもそも、php-webdriverのwikiにはこんなサンプルが載っていて
Taking Full Screenshot and of an Element · facebook/php-webdriver Wiki
どうやら要素を指定すると、その要素のみキャプチャが撮れますよというサンプルのようなのですが、それを試しても前回書いたようにスクリーンキャプチャはブラウザによって撮る範囲が決まっていて、

  • 現在見えている範囲の要素は上手くキャプチャが撮れる
  • 見えていない範囲の要素のキャプチャは撮れない

という問題を抱えていたのです。
※ 今のところ全画面を撮るIEでは上手く撮れますが、、

実際に試してみたソースがこちらで、
続きを読んでみようかな…

php-webdriverを使ってフルスクリーンのキャプチャを撮る

投稿日:

ここ最近ちょくちょくphp-webdriverを試していて、takeScreenshot();で画面キャプチャを撮った時に全画面のキャプチャが撮れないぃ!ムキーッ!!となっていたのですが、色々調べた結果何とかなったので書きます。

まず先にパク参考とさせて頂いた記事を紹介します。

記事を読んでみると、Seleniumを使ったスクリーンショットで撮れる範囲がブラウザによってバラバラであるということが分かります。※1
(以前書いた php-webdriverをWindowsのローカルで試す | Shimabox Blog の通りIEはページ全体を撮ってくれます)
 
そして対応策として、どれも一貫して

画面をスクロールさせつつキャプチャを撮ってその画像を繋ぎ合わせる

ということをやっていることが分かります。

PHPで同じことをやっているものはないかなぁと少し探したのですが、自分では見つからなかったのでChromeでフルサイズのスクリーンショットを撮るためのパッチ – Qiitaの実装内容を参考に(ほぼ完コピ)してPHPで書いてみました。
続きを読んでみようかな…

php-webdriverをWindowsのローカルで試す

投稿日:

小学校とか幼稚園とかの行事に参加する度に日焼けに悩まされています。
この時期は外でも地味に調子こけるからそれが辛い。

さて、前回( php-webdriverをmacのローカルで試す )はローカルのMacでphp-webdriverを使ってseleniumを動かしてみましたが、今回はみんな大好きWindowsを使ってみたいと思います。
※ WindowsなのでもちろんIEも動かせます

といっても、Macで試したときとそんなに違いはありません。

環境

環境ですが、

  • Windows 7 Professional
  • php
    • PHP 5.6.23 (cli) (built: Jun 22 2016 12:15:20)
    • xampp を使いました
    • php-webdriver は PHPのバージョンが5.5 以上であれば大丈夫です
  • java jdk
    • 1.8.0_77
    • javaは 1.8 以上であれば大丈夫です

自分はこんな感じです。
とりあえず、PHP(>=5.5) と Java(>=1.8) が入っていればよいと思います。

利用するブラウザ

利用するブラウザのバージョンは以下の通りです。

  • Chrome
    • 59.0.3071.86 (Official Build) (64 ビット)
    • ヘッドレスじゃないよ!
  • Firefox
    • 53.0.3 (64 ビット)
    • ※ 32 ビット版でも大丈夫だと思います
  • IE
    • 11.0.9600.18537

続きを読んでみようかな…