MYSQL8以降ウィンドウ関数対応=>ランキング。

2019.05.06

Logging

MYSQLでもランキング機能(rank())が使えるようになったとさ。日本国内のレンタルサーバーは最新の技術というより
一歩遅れた技術で運営している理由はリスクを取らないためにそうしているのだろうなとヒシヒシと感じます。

### support mysql>8.0.2 ウィンドウ関数
```sql
select id,namae, rank() over(order by code_total asc)as code_rank from code_data;
```
### code_data
|id|namae|code_total|
|---|---|---|
|1|kaonashi|15|
|2|mononoke|75|
|3|asitaka|52|
|4|san|87|
|5|theta|99|

タグ

```, ---, , 15, 2, , 4, 5, 52, 75, 8, 8.0.2, 87, 99, as, asc, asitaka, BY, Code, data, from, gt, ID, kaonashi, mononoke, MYSQL, namae, order, over, rank, san, select, SQL, support, theta, total, ウィンドウ, サーバー, ため, ランキング, リスク, レンタル, , 国内, 対応, 技術, 日本, 最新, 機能, 理由, 運営, 関数,

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。

2019.02.22

Logging

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。
実際、自分の階層に合わして呼び出しを変更してください。
なお、さくらレンタルサーバーでクロンの設定をして自動投稿できます。
ライブラリの設置などは割愛してます。

<?php
// cron:: cd /home/user/www/zip358.com/site/tw; /usr/local/bin/php tw.php
require_once ('../../wp-load.php');
require "vendor/autoload.php";
use AbrahamTwitterOAuthTwitterOAuth;
$consumer_key = "XXXXXXXXXXXXXX";
$consumer_secret = "XXXXXXXXXXXX";
$access_token = "XXXXXXXXXXXXXX";
$access_token_secret = "XXXXXXXXXXXXXXX";
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$args = array(
	'posts_per_page' => 1,
    'orderby' => 'rand'
);
$posts = get_posts($args);
foreach ( $posts as $val ){
    $href =  get_permalink($val->ID);
    $title = get_the_title($val->ID);
    $res = $to->post("statuses/update", array("status" => $title . " " . $href));
}

タグ

358, Abraham, access, autoload, bin, cd, com, consumer, cron, home, key, local, lt, once, php, require, secret, site, tok, tw, TwitterOAuth, use, user, usr, vendor, WordPress, wp-load, XXXXXXXXXXXX, XXXXXXXXXXXXXX, zip, クロン, サーバー, さくら, ツイート, ピックアップ, ライブラリ, ランダム, レンタル, , 割愛, 変更, 実際, 投稿, 自分, 自動, 記事, 設定, 設置, 階層,

さくらレンタルサーバーとXサーバーのMYSQLの規定

2018.11.13

Logging

さくらレンタルサーバーとXサーバーのMYSQLの規定は下記になります。
個人で使用する場合、1G、多くて3Gもあればそんなに困らないとは思いますが、企業や仕事で商品データなどをMYSQLサーバーに保存しようとすると足りない。さくらレンタルサーバーは9Gまで保証してくれるが、それでも足りないっていう企業の方も多くいると思います。そんな場合はさくらレンタルサーバーだと共有サーバーを諦めてワンランクアップしたマネージドサーバ(IP専用)を考えてみると良いかもしれないです。
ちなみにXサーバーはビジネスタイプでも同じ規定です。

https://www.xserver.ne.jp/manual/man_db_spec.php

https://help.sakura.ad.jp/hc/ja/articles/206053142#db

タグ

, 206053142, , , ad, articles, db, hc, help, https, IP, ja, jp, MYSQL, sakura, アップ, サーバ, サーバー, さくら, それ, タイプ, データ, ビジネス, マネージド, ランク, レンタル, ワン, 下記, 仕事, 企業, 使用, 保存, 保証, 個人, 共有, 商品, 場合, 専用, , 規定,

さくらレンタルサーバーとかで制限以上のクロンタブ(crontab)を使う方法。

2018.11.08

Logging

さくらレンタルサーバーとかで制限以上のクロンタブ(crontab)を使う方法
10年ぐらいまえのコードを見直して改善したコードが下記になります。
10年前はクラスを使わない方法で構築したのだけど、今回はクラスの概念を
使って構築。ここ何年かで自分のコーディングの技術は上がっているかといえば
そうでもないですが、昔よりかは技術の幅は広がっていると思いたいw
※qiita日付は数年前にUPしたのですけど、コード自体は10年前のコードです。

追記:2022/10/08 修正:詳しくはコチラ
https://qiita.com/question909/items/8f1df9b62ab4fba76243

<?php
//5分刻みに対して有効な無限クローン 処理が負荷の場合どうなるかは知りません。
date_default_timezone_set('Asia/Tokyo');
class cron{

    public function d_m($obj)
    {
            if($obj->m==="*")return true;
            if(preg_match("/,/",$obj->m))return $this->comma($obj->m,date("m"));
            if((int)$obj->m === (int)date("m"))return true;

            return false;
    }

    public function d_d($obj)
    {
            if($obj->d==="*")return true;
            if(preg_match("/,/",$obj->d))return $this->comma($obj->d,date("d"));
            if((int)$obj->d === (int)date("d"))return true;

            return false;
    }

    public function d_H($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->H)){
                $H = explode("/",$obj->H);
                if((int)$H[1]>0 && ((int)date("H") % (int)$H[1])===0)return true;
            }else{
                if($obj->H==="*")return true;
                if(preg_match("/,/",$obj->H))return $this->comma($obj->H,date("H"));
                if((int)$obj->H === (int)date("H"))return true;

            }
            return false;
    }

    public function d_i($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->i)){
                $i = explode("/",$obj->i);
                if((int)$i[1]>0 && ((int)date("i") % (int)$i[1])===0)return true;
            }else{
                if($obj->i==="*")return true;
                if(preg_match("/,/",$obj->i))return $this->comma($obj->i,date("i"));
                if((int)$obj->i === (int)date("i"))return true;

            }
            return false;
    }

    //曜日 0=日曜日 6=土曜日
    public function d_w($obj)
    {
            if((int)$obj->w[date("w")]===1)return true;
            return false;
    }

    public  function comma($c="",$t=""){
        if($c==="")return false;
        if($t==="")return false;
        $flg = false;
        foreach(explode(",",$c) as $cc){
            if((int)$cc===(int)$t)$flg = true;
        }
        return $flg;
    }


    public function d_command($obj){
        if($obj->command){
            exec($obj->command . " > /dev/null &");
        }
        return true;
    }

}
if ($argv[1]) {
   $filename = $argv[1];
    if(is_file($filename)){
        $jsn = json_decode(file_get_contents($filename));
        $cron = new cron();
        try {
            foreach($jsn as $obj){
                if($cron->d_m($obj)){
                    if($cron->d_d($obj)){
                        if($cron->d_H($obj)){
                            if($cron->d_i($obj)){
                                if($cron->d_w($obj)){
                                    $cron->d_command($obj);//波動拳{{{{
                                }
                            }
                        }
                    }
                }
            }
        } catch (\Throwable $th) {
            print $th->getMessage();
        }
    }
}

タグ

08, 10, 2022, 39, 5, Asia, class, cron, crontab, date, default, function, if, lt, obj, php, public, qiita, set, timezone, Tokyo, UP, , クラス, クローン, クロン, コーディング, コード, ここ, コチラ, サーバー, さくら, タブ, まえ, レンタル, 下記, 今回, 何年か, 修正, 処理, 分刻み, 制限, 場合, , 技術, 改善, , 方法, 日付, , 有効, 概念, 構築, 無限, 自体, 自分, 負荷, 追記,

Twitterの画像を抽出、非API

2018.11.07

Logging

Twitterの画像を抽出、非API
Goutteライブラリを使用してTwitterのメディアを抽出するだけで
APIを使用せずに17枚の画像が抽出することが可能。
これを改良してスクロールさせながらってのは出来ないのではないかな
特にVPSじゃないレンタルサーバーなどでは不可能じゃないのかと思います。

require_once './vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET','https://twitter.com/xxxx/media');
$img = $crawler->filter(".AdaptiveMedia-photoContainer.js-adaptive-photo img")->each(function ($node){
return $node->attr('src');
});

タグ

'src', 17, AdaptiveMedia-photoContainer, API, APITwitter, attr, autoload, Client, com, crawler, each, filter, function, GET, Goutte, gt, img, js-adaptive-photo, media', new, node, once, php, request, require, return, Twitter, use, vendor, VPS, xxxx, こと, これ, サーバー, スクロール, ない, メディア, ライブラリ, レンタル, 不可能, 使用, 出来, 可能, 思い, 抽出, 改良, , 特に, 画像, ,

映画、ファイナルファンタジーキングスグレイブを観ましたので。

2016.11.22

Logging


映画、ファイナルファンタジーキングスグレイブを観ました(レンタル)ので
ちょっと感想を残しときます。
FF15を始める前にファイナルファンタジーキングスグレイブを
観とくとよりいっそう楽しめるのではないかなぁという感じです。
CGのクオリティはかなり高いので観ていて違和感ないですね。
ファイナルファンタジーの世界をリアルに再現したら
こうなったという印象です。あとはストーリーをもっと深くすれば
回収できる映画として成り立つと思います。
それにしてもFINAL FANTASYの開発陣営の技術力は
半端ないなと体験版をプレイしていて思うわけです。
どれぐらいの人数で開発しているのだろうか・・・。
数百人は開発に関わっているだろうけど…。
トイウコトデ、FF15の発売日まで
あともう少しです、自分は土日からプレイすると
思います。

キングスグレイブ ファイナルファンタジーXV E3 2016 TRAILER(日本語版)

タグ

B01DKGAQWW, FF15, KINGSGLAIVE FINAL FANTASY XV Blu-ray, いな, クオリティ, ストーリー, トイウコトデ, どれぐらい, ファイナルファンタジーキングス, レンタル, 体験版, 大事, 始末, 技術力, 数百人, 発売日, 違和感, 開発陣営,

映画、「怒り」を観てきました。感想ではないけれど感想。

2016.09.19

Logging


映画、「怒り」を観てきました。
唯唯、良かったです、こんなにも言い表すことの出来ない
映画無いです。映画館に足を運びたくない人は
映画館に足を運ばなくても良いです、ですがDVDやブルーレイ、
レンタルや地上波放送で観る機会があるのなら
是非、観てほしい映画だなと感じました。
ちなみに世の中は「君の名は」旋風が続いてます。
高知県も長蛇の列です。
自分としては「君の名は」より映画「怒り」を観ることの方が
日本人として意義があるじゃないだろうかと思います。
この映画には人のいろいろな心情を映し出しています。
観る価値は自分としてはかなりあると思います。
是非、劇場に足を運んで観てほしい映画です。
広告塔ではありませんが、是非観てほしい映画です。

妻夫木が綾野剛にまたがり強引キス…映画『怒り』予告編第2弾

タグ

DVD, いろいろ, かなり, こと, ブルーレイ, レンタル, , , , 価値, 劇場, , , 地上波, 広告塔, 心情, 意義, 感想, 放送, , 旋風, 日本人, 映画, 映画館, 機会, 自分, , 長蛇の列, 高知県,

高知県では上映されない映画だけど観てみたい映画。

2016.08.08

Logging

高知県では上映されない映画だけど観てみたい映画、
タイトルは「奇跡の教室 受け継ぐ者たちへ」です。実話を基にした映画だそうで
ますます観たくなったのですが、高知県では上映されないので
レンタルが始まったら観てみようと思っています。
http://kisekinokyoshitsu.jp/
ちなみにこれから観に行く映画は、X-MENとジャングル・ブックです。
ちょうど、15日、16日が夏季休暇なので観に行くつもりです。
観たら映画の感想を載せます。

『奇跡の教室 受け継ぐ者たちへ』予告 8月6日公開

タグ

15, 16, X-MEN, これ, ジャングル, タイトル, ちょうど, つもり, ブック, レンタル, 上映, , 夏季休暇, 奇跡, 実話, 感想, 教室, 映画, , , 高知県,

FuelPHPをサクラレンタルサーバー共有で動かすには?

2016.07.14

Logging

FuelPHPをサクラレンタルサーバー共有で動かすには?
どうしたら良いのかを記述しときます。
\fuel\app\config\config.phpに記述されている’base_url’の所を
base_url’ ?=>’http://任意.com/’,かbase_url’ ?=>’任意の階層’にします。
オプションでいろいろと変更できる点はありますが、今回はスルーします。
FuelPHPの日本公式サイトを参照
次にルートの直下に.htaccessを作成し下記の内容を記述しアップロードを行なってください。

RewriteEngine on 
RewriteBase /public 
RewriteRule (.*) /public/$1

この段階ではルートにアクセスしても表示されません。表示させるためには
\public.htaccessの.htaccessファイルを一部変更してあげる必要があります。
まず、RewriteBase /publicを追加しOptions +FollowSymLinks -Indexesと
記載されている部分をコメントアウトする必要があります。
これらの事をするとルートURLでFuelPHPの初期の表示がされるようになります。

いろいろなサイトを拝見しましたが、結構設定を変更しないといけないよと書かれていますが、実際はコレだけの設定変更で表示することは可能です。ちなみに余談ですがオプション値のココだけは変更したら良いかなという
所を記載します。

	/**
	 * Localization & internationalization settings
	 */
	 'language'           => 'ja', // Default language
	 'language_fallback'  => 'ja', // Fallback language when file isn't available for default language
	 'locale'             => 'ja_JP.UTF-8', // PHP set_locale() setting, null to not set
	/**
	 * Internal string encoding charset
	 */
	 'encoding'  => 'UTF-8',
	/**
	 * DateTime settings
	 *
	 * server_gmt_offset	in seconds the server offset from gmt timestamp when time() is used
	 * default_timezone		optional, if you want to change the server's default timezone
	 */
	 'server_gmt_offset'  => 0,
	 'default_timezone'   => 'Asia/Tokyo',

タグ

, App, base, com, config, fuel, FuelPHP, htaccess, http, ON, php, public, Rewrite, RewriteBase, RewriteEngine, RewriteRule, url, アクセス, アップロード, いろいろ, オプション, サーバー, サイト, さくら, スルー, ため, ファイル, ルート, レンタル, 一部, 下記, 今回, 任意, 作成, 公式, 共有, 内容, 参照, 変更, 必要, , 日本, 段階, , 直下, 表示, 記述, 階層,

映画、エヴェレスト神々の山嶺(エベレストかみがみのいただき) #映画レビュー

2016.03.13

Logging


エヴェレスト神々の山嶺(エベレストかみがみのいただき)を観に行きましたので
感想なんかを残しときます。
いや、良かったです。
いまの自分になんか「ぐっ」っと来る内容になっていました。
まさに映画館で観てよかった映画でした。
むさい男っぷり観る価値ありかと
思います、綺麗きれいしていない映画でした。
こういうの観ると「登山してみたいな」と感じます。
今年、2回目ぐらいの見応えのある映画でした。
おそらく映画館で観ないとずっしりこないので、
エヴェレスト神々の山嶺を見たい方は
レンタルになる前に是非、映画館であの音響で
映画を観ることオススメします。
どっちかって言うと男っぷりな映画です。
なよなよした男ではなく、男っぷり良い映画ですので
是非、そういうのがお好みの方オススメします。
ちなみに自分は男ですが
一つ筋が通っていて良いなと感じた映画でした。

タグ

B00HD05KAA, Blu-ray, エヴェレスト神々, エベレストかみ, お好み, ファイト・クラブ, むさい男っぷり観る価値, レンタル, 一つ筋, 始末, 山嶺, 感想, 映画レビュー, 映画館, 男っぷり良い映画, 見応え, 音響,

さくらのレンタル―サーバーのCRONでファイルの呼び出し方が

2015.10.06

Logging

/usr/local/bin/php -f /home/xxxxx/www/hoge.php
cd /home/xxxxx/www/;/usr/local/bin/php hoge.php
cd /home/xxxxx/www/ && /usr/local/bin/php hoge.php
cd /home/xxxxx/www/ | /usr/local/bin/php hoge.php

さくらのレンタル―サーバーのCRONでファイルの呼び出し方が変わっていた
今までは一行目の呼び出し方でファイルの実行が可能だったのですが
この頃、仕様が変わったのかは分かりませんが、さくらのヘルプにも書いているように
実行させたいディレクトリまで、まずは移動して
走らせたいファイルを実行するという事を行わないと実行されません。
(※実行される場合もあり?)
二行目から解説すると二行目は、移動できなくても次の処理を実行します。
三行目は移動できたら処理を実行します。
四行目は処理は実行されませんが、こういう書き方もあるよ的な
事で書いてます。「|」この記号で処理と処理を結ぶと
Aの処理で帰ってきた値などをBの処理に引き継ぐことが出来ます。
簡単にいえばパラメータを渡すことが出来ます。
WEBでShellをちょっとしたときに使う場合、上記の方法を
つかう事が多いと思います。
覚えていたら何かと役に立ちますよ!!
 

タグ

AM, bin, cron, home, local, php hoge.php, shell, usr, xxxxx, サーバー, さくら, ディレクトリ, パラメータ, ファイル, ヘルプ, レンタル, 処理, 呼び出し方, 書き方, 記号,

さくらのVPSを使ってみた。標準OSインストールは初心者におすすめ。

2015.04.04

Logging

さくらVPSを使ってみた。さくらVPSをレンタルして標準OSインストールしてみました。インストール後、root権限でログインしてApacheをインストール(yum install httpd )してみたら、そのままの状態でWEBが表示された・・・・。ポートの開放とかの設定はしなくても良かったです。標準OSのセキュリティの設定でゴニョゴニョされていて特にWEBで使う分にはiptablesを触らなくても良さそうでした。インストール後、phpをインストールしてhttpdのconfig設定を変更して再起動すればphpが実行できる環境になりますから、あとはMysqlをインストールしたい方は、インストールしてゴニョゴニョ設定するだけでWEB環境を整います。あとは、ftpを使用したい方はインストール(yum install vsftpd)すれば良いだけです。FTP経由かSSH経由でコードをアップロードすればサイトを構築できてしまいます。
 

タグ

Apache, config, FTP, httpd, install, iptables, MYSQL, OS, php, root, SSH, VPS, vsftpd, web, yum, アップロード, あと, いま, インストール, おすすめ, コード, ゴニョゴニョ, サイト, さくら, さくらの, セキュリティ, そのまま, ポート, レンタル, ログイン, 使用, 再起動, , 初心者, 変更, 実行, , 構築, 標準, 権限, 状態, 環境, 経由, 表示, 設定, 開放,

初心者でも自分のオリジナルアドレスでサイトやブログを持つ方法。

2015.01.18

Logging

初心者でも自分のオリジナルアドレスでサイトやブログを持つ方法を紹介します。
一番手ごろな方法はライブドアブログの有料版を使用する方法がオススメです(ドメインは別途取得が必要)。月の支いもそれほど高くありません。※年に一回ドメイン(アドレス)料金が発生します。2番目にオススメははてなブログですが、いろいろと独自の機能が面倒くさい感じです。
他にはFC2などなどブログサービスを行っている会社は有料版で独自ドメインが使用できる場合が殆どです(アメーバブログを除く)。
上記の方法が超初心者でも独自ドメイン(オリジナルアドレス)でサイト(ブログ)を持つ方法です。

次に紹介するのがレンタルサーバーをレンタルしてサイトを持つ方法です。こちらはやや難易度が高いです。
まず、必要な知識や技術取得を列挙します。

  1. FTPソフトの操作(サーバー上にディレクトリ作成)
  2. HTMLの基礎知識など(サイト作成に必要)
  3. WordPress(ブログ)アップロードの方法
  4. パーティションの知識
  5. DBの知識(MYSQL)
  6. zipファイルの解凍方法。

※ディレクトリ=フォルダ(Windows)
上記の知識が多少、必要になってきます。全然無くても勉強しながら試していくうちに徐々に覚えていきます。なので、例としてさくらレンタルサーバーの手続き方法やサイトやブログ開設方法を記載しときます。(習うより慣れろです(`・ω・´)。)
さくらレンタルサーバー(スタンダード版以上)でサイトやブログの設置する方法。
まずはレンタルのサーバ借りる手続きをこちらから行います→(スタンダード)。
注意して欲しい事は独自ドメインは後から申し込みします。
?申し込み時にさくらドメイン(アドレス:任意アドレス.sakura.ne.jp)を申し込みを行います。
※契約はスタンダードにする事、もしくはそれ以上!!。
?契約後、さくらから自動メールが届きますので保管してください。
?コントロールパネルに任意のさくらアドレス(ID)とパスワードでログインしてください。
https://secure.sakura.ad.jp/rscontrol/
?コントロールパネルから新規ドメインの契約を結びます。
ここで注意して欲しいのが契約時の選択項目で会員ID・現在さくらを利用中を選ぶことです。

?コントロールパネルから次のサイトの手順に従って作業してください。
お疲れ様です。(´Д`)
これで独自ドメインの取得及び使用ができるようになりました。
?
次にブログサイトの構築手順に進みます。
まず、コントロールパネルを開いてください。開いたらデータベースの新規作成ボタンをクリックして次のサイトの手順に従ってデータベース作成してください。ここで注意して欲しいのがデータベースの文字コードの設定をUTF-8に設定することです。また、パスワードは安易に推測されないような16文字以上のパスワードが良い感じです(ハッキングされないためにも)。
※パスワードはメモしてください。φ(..)メモメモ。
次にコントロールパネルからクイックインストール、ブログとクリックしていきます。次のサイトの手順を参考にしてください(※WordPressの手順STEP3の?から:中盤に記載)。
ここで注意して欲しいのがインストール先です。例えば、手順ではwpというフォルダにWordPressがインストールされます。※なお、ディレクトリ名の名前設定には注意が必要
なぜ、注意が必要か上記の方法でWordPressをインストールすると
ブログアドレスはhttp://オリジナルアドレス.com/wqとなってしまうからです。
?
http://オリジナルアドレス.com/にブログを表示したい場合は
FTPソフトを使用して手動でWordPressのインストールを行わないといけません(今回は省きます:手順はこちらから)。
現在状態ではオリジナルアドレスをブラウザに入力してもIndex of/という文字が表示されている状態になっていると思います。何故か、サイトを表示できる要素が無いからです。
表示させるファイルを作成しないといけません。
なのでファイル作成を行います。まずここで勉強をしてください。
マスター後、htmlファイルなどをFTPソフトを使用してアップロードを行います。FileZillaクライントというFTPソフトがオススメです(DLはこちらから、使用方法はこちらを参照)。
※ちなみにHTML作成時などにはエディタというものを使用します。
メモ帳でも作成できますが文字コードがシフトJISになってしまいますので少々問題があります。UTF-8という文字コードでサイト作成を行うのが現在の主流です(一昔前はシフトJISでしたけどね)。
エディタのオススメはテキストエディタ++です。他にもさくらエディタ秀丸エディタterapadが有名ドコロです。
((※ここではテキストエディタ++の文字コードの設定方法を記載しときます。インストール後、ファイル>新規作成と選択後にメニューバーのエンコードのUTF-8(BOMなし)で開くをクリックしてからソースコード(プログラム)を記載してください。尚、メニューバーの言語でH>HTMLと選択を行うと入力補完機能が使用できて便利です。))
ちなみにさくらレンタルサーバーのアップロード先
サーバー上の/home/ID名/www/のオリジナルアドレス.com(任意)/
という階層にアップロードする必要があります。
尚、wwwの直下にアップロードすると初期に取得した任意ID.sakura.ne.jpのアドレスに反映されます。
———-
サイトデザインなんて出来ないという方にテンプレートというものがあります。
ある程度、デザインされたファイルを配布しているのでまずは、そういうファイルを加工後、アップロードして
みるのも良いかも。テンプレート配布サイトはこちらから。
その他テンプレート配布サイト*1,*2,*3,*4
以上で初心者でもオリジナルアドレスでサイトやブログを持つ方法になります。
※注意点、ファイルやディレクトリを安易に消してしまうとサイトが表示されなくなったり機能しなくなったりしますので注意が必要です(アップロードも同様)。

タグ

2, fc, FTP, html, WordPress, アップ, アドレス, アメーバ, いろいろ, おすすめ, オリジナル, こちら, サーバー, サービス, サイト, ソフト, ディレクトリ, ドメイン, はてな, ブログ, ライブドアブログ, レンタル, ロー, , 上記, , 会社, 作成, 使用, 列挙, 初心者, 別途, 取得, 基礎, 場合, , 必要, 感じ, 手ごろ, 技術, 操作, 料金, 方法, , 有料, 機能, 殆ど, 発生, 知識, 紹介, 自分, 難易,

cronの設定数に制限があるさくらサーバーとかで制限以上に使う方法(´Д`)

2015.01.12

Logging

cronの設定数に制限があるさくらサーバーとかで制限数以上(cron設定を増やす方法
)に使う方法はないかなと考えた結果、自分はこうしました。
一つのPHPファイル(実行ファイル)から複数のファイルをキックすることに!(´Д`)
こうすれば、処理が遅くないファイルなら複数個でも実行できるのではないかと
思ったわけです。結果的に成功しているぽっいです。
※Shellで作れる人は作れるだろうけど自分には無理(´∀`*)ポッいのでPHPで制作しました。
ちなみにさくらレンタルサーバーの場合、php.iniにタイムゾーン設定を
加えてあげてください(date.timezone = Asia/Tokyo ←追加)。
そうしないと動かない恐れがあります。
作っていて思ったことですが、作る考え方はわかるものの、元々メソッドを覚えていない
人間なのでググってメソッド探しにまずヘタりました( ´Д`)=3。その後、完璧なハズとか
思ってソースを実行させるとエラーは出ないものの。思った通りうごかないという事象に
苦しめられること2時間、何でだろうとか思っていて検証してみた結果、メソッドの使い方が
間違っていたり、変数名が間違っていたりとなんとも言えない無情さに襲われましたが
何とか動作するようになったみたいなのでコードをうっぷします。
ソースコードを記載しときます。動作するとは
思いますが誤作動するかもしれないので保証はしません。なお、いつもながら
ソースにはコメントを記載しておりませんのでトレースしてください。
PHPファイルのDLはこちらから( ´Д`)=3?(最終更新日2015/01/12 11:07)
追記2
改良しました。{*改良版はこちら*}
※このPHPファイルを5分置きにキックしていますΣ(゚∀´(┗┐ヽ(・∀・ )ノ。

<?php
//5分刻みに対して有効な無限クローン 処理が負荷の場合どうなるかは知りません。
date_default_timezone_set('Asia/Tokyo');
class cron{

    public function d_m($obj)
    {
            if($obj->m==="*")return true;
            if(preg_match("/,/",$obj->m))return $this->comma($obj->m,date("m"));
            if((int)$obj->m === (int)date("m"))return true;

            return false;
    }

    public function d_d($obj)
    {
            if($obj->d==="*")return true;
            if(preg_match("/,/",$obj->d))return $this->comma($obj->d,date("d"));
            if((int)$obj->d === (int)date("d"))return true;

            return false;
    }

    public function d_H($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->H)){
                $H = explode("/",$obj->H);
                if((int)$H[1]>0 && ((int)date("H") % (int)$H[1])===0)return true;
            }else{
                if($obj->H==="*")return true;
                if(preg_match("/,/",$obj->H))return $this->comma($obj->H,date("H"));
                if((int)$obj->H === (int)date("H"))return true;

            }
            return false;
    }

    public function d_i($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->i)){
                $i = explode("/",$obj->i);
                if((int)$i[1]>0 && ((int)date("i") % (int)$i[1])===0)return true;
            }else{
                if($obj->i==="*")return true;
                if(preg_match("/,/",$obj->i))return $this->comma($obj->i,date("i"));
                if((int)$obj->i === (int)date("i"))return true;

            }
            return false;
    }

    //曜日 0=日曜日 6=土曜日
    public function d_w($obj)
    {
            if((int)$obj->w[date("w")]===1)return true;
            return false;
    }

    public  function comma($c="",$t=""){
        if($c==="")return false;
        if($t==="")return false;
        $flg = false;
        foreach(explode(",",$c) as $cc){
            if((int)$cc===(int)$t)$flg = true;
        }
        return $flg;
    }


    public function d_command($obj){
        if($obj->command){
            exec($obj->command . " > /dev/null &");
        }
        return true;
    }

}
if ($argv[1]) {
   $filename = $argv[1];
    if(is_file($filename)){
        $jsn = json_decode(file_get_contents($filename));
        $cron = new cron();
        try {
            foreach($jsn as $obj){
                if($cron->d_m($obj)){
                    if($cron->d_d($obj)){
                        if($cron->d_H($obj)){
                            if($cron->d_i($obj)){
                                if($cron->d_w($obj)){
                                    $cron->d_command($obj);//波動拳{{{{
                                }
                            }
                        }
                    }
                }
            }
        } catch (\Throwable $th) {
            print $th->getMessage();
        }
    }
}

タグ

, Asia, cron, date, ini, php, shell, timezone, Tokyo, いの, キック, こと, サーバー, さくら, ゾーン, タイム, パス, ファイル, ヘタ, ボツ, メソッド, レンタル, わけ, 一つ, , 人間, 処理, 制作, 制限, 場合, 完璧, 実行, , 成功, 方法, 無理, 結果, 考え方, 自分, 複数, 複数個, 設定, 追加,