Symfoware

Symfowareについての考察blog

nginx 拡張モジュール サーバー時間を取得

nginxの拡張モジュールを作ってみています。
nginx 拡張モジュールの作り方

サーバー時間を取得する方法を調べてみました。


UNIX エポックからの秒数



core/​ngx_times.hにngx_time()の定義があります。
これでサーバー時間が取得出来ました。


  1. static ngx_int_t
  2. ngx_http_sample_handler(ngx_http_request_t *r)
  3. {
  4.     // ここに処理を記載する
  5.     ngx_http_sample_loc_conf_t *alcf;
  6.     time_t time;
  7.     
  8.     // conf読み込み
  9.     alcf = ngx_http_get_module_loc_conf(r, ngx_http_sample_module);
  10.     
  11.     // onになっていなければ終了
  12.     if (!alcf->enable) {
  13.         return NGX_OK;
  14.     }
  15.     
  16.     // UNIX エポックからの秒数を取得
  17.     time = ngx_time();
  18.     ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "access sample module time:%d", time);
  19.     
  20.     
  21.     return NGX_OK;
  22. }




2014/12/14 12:40:22 [debug] 2192#0: *1 access sample module time:1418528422






年月日などの取得



年月日などを取得したい場合は
ngx_gmtime(time_t t, ngx_tm_t *tp)
を使うと良さそうです。


  1. static ngx_int_t
  2. ngx_http_sample_handler(ngx_http_request_t *r)
  3. {
  4.     // ここに処理を記載する
  5.     ngx_http_sample_loc_conf_t *alcf;
  6.     ngx_tm_t tm;
  7.     
  8.     // conf読み込み
  9.     alcf = ngx_http_get_module_loc_conf(r, ngx_http_sample_module);
  10.     
  11.     // onになっていなければ終了
  12.     if (!alcf->enable) {
  13.         return NGX_OK;
  14.     }
  15.     
  16.     // UNIX エポックからの秒数を取得
  17.     //time = ngx_time();
  18.     
  19.     // 年月日がわかる状態で取得
  20.     ngx_gmtime(ngx_time(), &tm);
  21.     
  22.     ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "access sample module year:%d", tm.ngx_tm_year);
  23.     ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "access sample module month:%d", tm.ngx_tm_mon);
  24.     ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "access sample module day:%d", tm.ngx_tm_mday);
  25.     ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "access sample module hour:%d", tm.ngx_tm_hour);
  26.     ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "access sample module min:%d", tm.ngx_tm_min);
  27.     ngx_log_error(NGX_LOG_DEBUG, r->connection->log, 0, "access sample module sec:%d", tm.ngx_tm_sec);
  28.     
  29.     
  30.     return NGX_OK;
  31. }





取得できる時間は標準時です。


2014/12/14 12:48:16 [debug] 2234#0: *1 access sample module year:2014
2014/12/14 12:48:16 [debug] 2234#0: *1 access sample module month:12
2014/12/14 12:48:16 [debug] 2234#0: *1 access sample module day:14
2014/12/14 12:48:16 [debug] 2234#0: *1 access sample module hour:3
2014/12/14 12:48:16 [debug] 2234#0: *1 access sample module min:48
2014/12/14 12:48:16 [debug] 2234#0: *1 access sample module sec:16


関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/12/14(日) 12:52:02|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<nginx 拡張モジュール 設定ファイルの値を取得する | ホーム | nginx モジュール作成 メソッド、URL、クエリパラメーターの取得方法>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1566-98f26f64
この記事にトラックバックする(FC2ブログユーザー)