{"id":31,"date":"2013-10-07T15:01:17","date_gmt":"2013-10-07T06:01:17","guid":{"rendered":"http:\/\/www.otwo.jp\/blog\/?p=31"},"modified":"2015-01-14T11:04:08","modified_gmt":"2015-01-14T02:04:08","slug":"batch","status":"publish","type":"post","link":"https:\/\/www.otwo.jp\/blog\/batch\/","title":{"rendered":"\u30d0\u30c3\u30c1\u30b5\u30fc\u30d0\u30fc\u306b\u3064\u3044\u3066"},"content":{"rendered":"<p>\u3053\u3093\u3061\u306f\u3002\u958b\u767a\uff12\u90e8\u306e\u5409\u5ca1\u3067\u3059\u3002<\/p>\n<p>\u30bd\u30fc\u30b7\u30e3\u30eb\u30b2\u30fc\u30e0\u306e\u30b5\u30fc\u30d0\u30fc\u3067\u3001\u9670\u306a\u304c\u3089\u9811\u5f35\u3063\u3066\u304f\u308c\u308b\u306e\u304c\u30d0\u30c3\u30c1\u30b5\u30fc\u30d0\u30fc\u3067\u3059\u3002<\/p>\n<p>\u30bf\u30b9\u30af\u3092\u6307\u5b9a\u3057\u305f\u6642\u9593\u304b\u5b9a\u671f\u7684\u306b\u5b9f\u884c\u3059\u308b\u30b5\u30fc\u30d0\u30fc\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p><!--more--><\/p>\n<h1>\u30d0\u30c3\u30c1\u30bf\u30b9\u30af\u7ba1\u7406daemon<\/h1>\n<p>\u51e6\u7406\u3068\u3057\u3066\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3057\u3001\u30bf\u30b9\u30af\u6e9c\u3081\u8fbc\u307f\u7528\u306e\u30c6\u30fc\u30d6\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002<br \/>\n\u305d\u3057\u3066\u3001\u5b9f\u884c\u6642\u9593\u304c\u904e\u304e\u3066\u3044\u308b\u30bf\u30b9\u30af\u304c\u3042\u308c\u3070\u3001\u305d\u308c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3053\u306e\u51e6\u7406\u3092\u4f5c\u6210\u3057\u305f\u9803\u306f\u3001php\u306edaemon\u7528\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u3066\u3044\u305f\u306e\u3067\u3059\u304c\u3001\u6700\u65b0\u7248\u3067\u306f\u5358\u7d14\u306b\u7121\u9650\u30eb\u30fc\u30d7\u3092\u3057\u3066\u3044\u307e\u3059\u3002<br \/>\n\u3067\u3001\u305d\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092<a href=\"http:\/\/supervisord.org\/\">supervisor<\/a>\u3067\u843d\u3061\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u304b\u306a\u308a\u3056\u3063\u304f\u308a\u3068\u51e6\u7406\u3092\u66f8\u304f\u3068\u4e0b\u306e\u3088\u3046\u306a\u611f\u3058\u3067\u3059\u3002<\/p>\n<pre class=\"brush: php\r; notranslate\">while( true ){\r\n    sleep(1);\r\n\r\n    try{\r\n        $MasterDB = getDB('master');\r\n        $MasterDB-&gt;startTransaction();\/\/\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u30d5\u30e9\u30b0\u3092\u7acb\u3066\u308b\r\n\r\n        \/\/\u30b8\u30e7\u30d6\u306e\u53d6\u5f97\uff08\u884c\u30ed\u30c3\u30af\u3092\u304b\u3051\u3066\u6392\u4ed6\u3059\u308b\uff09\r\n        $newJob = LogicJob::getNewJob( $MasterDB );\r\n\r\n        \/\/\u5b9f\u884c\u3059\u308b\u30b8\u30e7\u30d6\u304c\u306a\u3051\u308c\u3070\u3001continue\r\n        if ( !$newJob ){\r\n            $MasterDB-&gt;close();\r\n            continue;\r\n        }\r\n\r\n        \/\/\u30b8\u30e7\u30d6\u306e\u5b9f\u884c\uff08exec\u3067\u5225php\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u8e74\u308b\uff09\r\n        LogicJob::execJob( $newJob ); \/\/exec( $newJob['php_file'] . ' &gt; \/dev\/null &amp;' );\r\n\r\n        \/\/\u30b8\u30e7\u30d6\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u5b9f\u884c\u4e2d\u306b\u5909\u66f4\r\n        LogicJob::updateJobStatus( $MasterDB , $newJob, LogicDaemon::JOB_STATUS_EXEC  );\r\n\r\n        \/\/\u30b3\u30df\u30c3\u30c8\r\n        $MasterDB-&gt;commit();\r\n    }\r\n    catch( Exception $e ){\r\n        $MasterDB-&gt;rollback();\/\/\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u30d5\u30e9\u30b0\u304c\u7acb\u3063\u3066\u3044\u308c\u3070rollback\r\n    }\r\n\r\n    $MasterDB-&gt;close();\r\n}\r\n<\/pre>\n<h2>\u30bf\u30b9\u30af\u30c6\u30fc\u30d6\u30eb\u3068\u884c\u30ed\u30c3\u30af<\/h2>\n<p>\u4e0a\u306e\u3088\u3046\u306b\u5b9f\u884c\u3059\u3079\u304d\u30bf\u30b9\u30af\u304c\u3042\u308b\u304b\u30c1\u30a7\u30c3\u30af\u3092\u3059\u308b\u306e\u3067\u3059\u304c\u3001\u5197\u9577\u5316\u306e\u305f\u3081\u3001\u3053\u306e\u51e6\u7406\u306f\u8907\u6570\u306e\u30b5\u30fc\u30d0\u30fc\u3067\u8d70\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u540c\u3058\u30c6\u30fc\u30d6\u30eb\u306e\u30c7\u30fc\u30bf\u306e\u53d6\u308a\u5408\u3044\u306b\u306a\u308b\u306e\u3067\u3001\u3053\u3053\u3067\u884c\u30ed\u30c3\u30af\u304c\u5fc5\u9808\u3068\u306a\u308a\u307e\u3059\u3002<br \/>\n\u3053\u306e\u5b9f\u88c5\u306f\u306a\u304b\u306a\u304b\u82e6\u52b4\u3057\u307e\u3057\u305f\u304c\u3001\u73fe\u5728\u306f\u554f\u984c\u306a\u304f\u52d5\u4f5c\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h2>\u8ab2\u984c\uff01<\/h2>\n<p>\u3053\u306e\u30d0\u30c3\u30c1\u306e\u5b9f\u88c5\u306f\u3001\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u4f7f\u3063\u3066\u3001\u3082\u3063\u3068\u9ad8\u6a5f\u80fd\u3067\u30ab\u30c3\u30b3\u30a4\u30a4\u611f\u3058\u306b\u3057\u305f\u3044\u3093\u3067\u3059\u304c\u2026<br \/>\n\u3068\u3001\u500b\u4eba\u7684\u306b\u306f\u601d\u3044\u307e\u3059\u3002<\/p>\n<p><a href=\"http:\/\/www.celeryproject.org\/\">celeryd<\/a>\u3068\u304b\u3069\u3046\u306a\u3093\u3067\u3057\u3087\u3046\u304b\u3002python\u3067\u3059\u304c\u3002<br \/>\n\u30d0\u30c3\u30c1\u30b5\u30fc\u30d0\u30fc\u306e\u69cb\u7bc9\u30fb\u904b\u7528\u3001\u60c5\u5831\u4ea4\u63db\u3057\u305f\u3044\u3067\u3059\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u3093\u3061\u306f\u3002\u958b\u767a\uff12\u90e8\u306e\u5409\u5ca1\u3067\u3059\u3002 \u30bd\u30fc\u30b7\u30e3\u30eb\u30b2\u30fc\u30e0\u306e\u30b5\u30fc\u30d0\u30fc\u3067\u3001\u9670\u306a\u304c\u3089\u9811\u5f35\u3063\u3066\u304f\u308c\u308b\u306e\u304c\u30d0\u30c3\u30c1\u30b5\u30fc\u30d0\u30fc\u3067\u3059\u3002 \u30bf\u30b9\u30af\u3092\u6307\u5b9a\u3057\u305f\u6642\u9593\u304b\u5b9a\u671f\u7684\u306b\u5b9f\u884c\u3059\u308b\u30b5\u30fc\u30d0\u30fc\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"author":11,"featured_media":727,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[5],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/posts\/31"}],"collection":[{"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":10,"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"predecessor-version":[{"id":1203,"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/posts\/31\/revisions\/1203"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/media\/727"}],"wp:attachment":[{"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.otwo.jp\/blog\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}