globでファイル探し、filemtimeで更新日付を取得
任意のディレクトリにあるhtmlのファイルの内容を読み込んで配列に格納しようと思います
キーはファイルの更新日付
globでパターンに一致するファイルのパスを探す
<?php // ファイルの保存場所 $path = "/home/inc/data/"; // htmlファイルのパス名が配列で返される glob($path."*.html"); ?>
これで対象のhtmlが取得できました
filemtimeで更新日付を取得
<?php // ファイルのパス $path = "/home/inc/data/test.html"; // ファイルの更新日付を取得 $updateDate = filemtime($path); echo $updateDate; ?>
出力結果
1503079200
つまりは1970年1月1日からの経過秒数です
date関数を使ってフォーマット
<?php // ファイルのパス $path = "/home/inc/data/test.html"; // ファイルの更新日付を取得 $updateDate = filemtime($path); echo date("YmdHis",$updateDate); ?>
出力結果
20170819030000
これで更新日付が取得できました
globでファイル探し、filemtimeで更新日付を取得
<?php // ファイルのパス $path = "/home/inc/data/"; // htmlの内容を保持する配列 $list = array(); foreach(($path."*.html") as $file){ // ファイルが対象 if(is_file($file)){ // ファイルの更新日付 $key = date("YmdHis", filemtime($file)); // 更新日付をキーとしてファイルの内容を保持 $list[$key] = file_get_contents($file); } ?>
この配列をキーでソートして更新日付の新しい順にhtmlファイルの内容を出力するのが最終目的です
次回は配列をキーでソートしてみようと思ってます
MOTO Z バッテリー異常?
購入して8ヶ月、MOTO Zの調子が悪い・・・
バッテリーが70%くらい残っている状態でいきなりスマホの電源が落ちる
再起動するとバッテリー不足で起動できず
少し時間をあけてモバイルバッテリーを接続し起動してみると
70%からいっきに減ってしまいました
ここ数週間この現象が数回発生してます
電源落ちるのがバッテリ残量50%だったり30%だったり
さらに朝フル充電して何もしないで夕方確認すると
1%で数時間起動し続けていたのか?
表示されている残量と実際の残量にズレが生じたと思われます
moto 360 sport のバンドが裂けてしまった時の対応方法
moto360 sportのバンドが裂けてしまいました・・・
moto360 sportはバンドと ディスプレイが一体型です。
なのでバンドを交換することはできません。
なんとかしてくっつけたいと思います。
バンドはシリコン製なのでシリコンに対応した接着剤が必要ですが。
手持ちの接着剤はシリコンに対応していなかったのでシリコン対応の接着剤を購入することにしました。
購入したのはこちらの接着剤。
ヨドバシ.comで990円で購入。
近くにヨドバシカメラがあるおかげなのか注文した翌日には届きました。
ヨドバシ.comは1品からでも 配達料金無料・日時指定無料なのが良いですね。
ネットで注文して店舗で受け取れるのもよいです。
ヨドバシ.comをヨイショするのはこれくらいにして早速修理を始めます。
付属のペン型プライマーを接着した部分に塗布した後に接着剤をつけます。
1分ほどでくっつきましたが、マニュアルには30分ほど放置するように記載されているので30分放置。
避けてたのはまるわかりですね・・・
30分後、おそるおそる装着
数時間外出しましたが途中で裂けることはありませんでした。
ただ、強く引っ張ったりすると再び裂けるかもしれないので優しく取り扱うのがよいと思いました。
- 出版社/メーカー: セメダイン
- メディア: その他
- この商品を含むブログを見る
ブログの更新情報をPINGZONE経由でPingサーバーに送信
先日構築中のサイトにRSS2.0とAtomのフィードを生成する機能を追加しました
何故この機能を追加したか?
通常PING送信はPINGサーバーのアドレスに対して個別に送信します
有名なPINGサーバーというとGoogleブログ検索でしょうか
他にもいろいろありますが、突然無効になったりすることもあり、
個別に送信しているとメンテナンスが非常に面倒です
この問題を解決するために利用しているのが「PINGZONE」です
利用手順(会員登録していない場合)
これで複数のPIGNサーバーに一斉にPING送信できます
注意点は以下の記述を
内に記述すること<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://otaku.kansai-fan.com/rss2.xml" /> <link rel="alternate" type="application/atom+xml" title="Atom" href="http://otaku.kansai-fan.com/atom.xml" />
この記述がないと最新更新ブログ一覧にブログ情報が追加されません
PING送信も恐らく失敗している
ちなみにAtomに対応していないのか以下の記述だと同様の現象が発生します
<link rel="alternate" type="application/atom+xml" title="Atom" href="http://otaku.kansai-fan.com/atom.xml" />
hrefを相対パスで指定した場合も同様の現象が発生します
私は最初相対パスで記述しており気付くまで数時間費やしてしまいました・・・
PINGZONEは会員登録するとPINGZONEにPING送信するだけで上記の一連の処理を行ってくれます
自サイトにはまだPINGZONEにPING送信する機能は実装していません
次実装するのはフィードの作成後にPINGZONEにPING送信する機能になりそうです
意外と簡単にphpでRSS2.0とAtomのフィードを生成できた
自前で構築中のサイトの記事作成時にRSS2.0とAtomのフィードを生成する機能を追加してみました。
使ったのはPHP Universal Feed Generatorというライブラリ
記事データ
実際はデータベース等から取得して連想配列に格納します
<?php $item1 = array(); $item2 = array(); $item1["title"] = "タイトル2"; $item1["link"] = "http://otaku.kansai-fan.com/content/20170502"; $item1["date"] = strtotime(date('Y-m-d G:i:s', time())); $item1["author"] = "投稿者2"; $item1["description"] = "投稿内容2"; $item2["title"] = "タイトル1"; $item2["link"] = "http://otaku.kansai-fan.com/content/20170501"; $item2["date"] = strtotime(date('Y-m-d G:i:s', time())); $item2["author"] = "投稿者1"; $item2["description"] = "投稿内容1"; $list = array(); $list["20170502100000"] = $item1; $list["20170502090000"] = $item2; ?>
RSS2.0
<?php // ライブラリの読み込み use \FeedWriter\RSS2; // チャンネル情報の登録 $feed = new RSS2; $feed->setTitle("とあるオタクの備忘録"); $feed->setLink("http://otaku.kansai-fan.com/"); $feed->setDate(new DateTime()); $feed->setDescription("プレイ中のゲームのプレイ日記等"); $feed->setImage("http://otaku.kansai-fan.com/" , "とあるオタクの備忘録", "http://otaku.kansai-fan.com/image/logo.png" ); $feed->setChannelElement( "language" , "ja-JP" ); $feed->setChannelElement( "pubDate" , date(\DATE_RSS , time())); $feed->setChannelElement( "category" , "Blog" ); // 記事の分だけ、フィードのアイテムを追加する foreach ($list as $key => $value){ $data = $value; $item = $feed->createNewItem(); $item->setTitle($data["title"]); $item->setLink($data["link"]); $item->setDate($data["date"]); $item->setAuthor($data["author"]); $item->setDescription($data["description"]); $item->setId($data["link"], true) ; $feed->addItem($item); } // xml形式の文字列を出力 $xml = $feed->generateFeed(); // ファイルの保存場所を設定 $file = "/home/aaa/bbb/rss2.xml"; // ファイルの保存を実行 @file_put_contents($file, $xml); ?>
<?php // ライブラリの読み込み use \FeedWriter\ATOM; // チャンネル情報を登録 $feed = new ATOM; $feed->setTitle("とあるオタクの備忘録"); $feed->setLink("http://otaku.kansai-fan.com/"); $feed->setDate(new DateTime()); // 記事の分だけ、フィードのアイテムを追加する foreach ($list as $key => $value){ $data = $value; $item = $feed->createNewItem(); $item->setTitle($data["title"]); $item->setLink($data["link"]); $item->setDate($data["date"]); $item->setAuthor($data["author"]); $item->setDescription($data["description"]); $feed->addItem($item); } // xml形式の文字列を出力 $xml = $feed->generateFeed(); // ファイルの保存場所を設定 $file = "/home/aaa/bbb/atom.xml"; // ファイルの保存を実行 @file_put_contents($file, $xml) ; ?>
RSS2.0とAtomで設定する項目が少し異なるくらいで処理はほぼ変わりません。
RSS1.0は今回作成してませんが、ほぼ同じ流れで簡単に作成できそうです。
気を付けないといけないのは日付関連の項目
値が不正だとgenerateFeedメソッドでエラーが発生します
実際に出力したものがこちら