あああ

あああ


★pushtest.js
$(function() {
var retrieve_and_display = (function() {
var current_id = 0;
var new_line = "" ;
// var i = 0 ;


return function() {

setTimeout(function(){

// ここでパラメータでidより大きい値のみ表示
$.get( retrieve.php { since_id: 6 })
// $.get( retrieve.php { since_id: current_id })
// $.post( retrieve.php { since_id: current_id })
.done(function(result) {
//alert( こんにちは2![ + current_id + "][" + result + "]");
alert( こんにちは5![ + result[0].id + "]" );

if (result.length > 0) {
current_id = result[0].id;
// new_line = "" ;
result.reverse();

// if (i > 1) {
// //break;
// return false;
// }
// i++ ;


$("li").remove();

// あとは sleep

$.each(result function() {

// new_line += "" + this.id + this.body + this.created + "";
//alert( こんにちは3![ + new_line + "]" );

// $( <li /> ).text(this.id + this.body + this.created).replaceAll($( #timeline ));
$( <li /> ).text(this.id + this.body + this.created).prependTo($( #timeline ));
// $( <li /> ).text(result).prependTo($( #timeline ));

});
// $( <li /> ).text(new_line).replaceAll($( #timeline ));
//$("#timeline").remove();


}

retrieve_and_display();
});

// 2000ms 待った後に実行されるコールバック
} 0);



};




})();

retrieve_and_display();




});




★index.php

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<script src="//code.jquery.com/jquery-2.1.3.min.js" type="text/javascript"></script>
<script src="pushtest.js" type="text/javascript"></script>
<title>あああああああああ</title>
</head>
<body>

<p>timeline:</p>


<div style="width:500px;">
<ul id="timeline">
</ul>
</div>


</body>
</html>



★retrive.php
<?php

if (empty($_REQUEST[ since_id ])) {
$since_id = 0;
} else {
$since_id = (int)$_REQUEST[ since_id ];
}

//$db = new PDO("pgsql:..." postgres array(
// PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
// PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
//));

$db = new PDO("pgsql:dbname=postgres;host=localhost" postgres array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
));


//$conn = "host=127.0.0.1 dbname=postgres user=postgres password=";
//$db = pg_connect($conn);

set_time_limit(3);
$timeline = retrieve($since_id);
//sleep(15);
//var_dump($timeline);
if (empty($timeline)) {
$db->exec( LISTEN timeline_update );
$result = $db->pgsqlGetNotify(PDO::FETCH_ASSOC 0);
if ($result === false) {
output();
}
$timeline = retrieve($since_id);
}
output($timeline);

//var_dump($timeline);


function retrieve($since_id = 0 $limit = 10) {
global $db;
$limit = 10 ;

// $stmt = $db->prepare("SELECT * FROM timeline WHERE id > 3 ORDER BY id DESC LIMIT 3");
$stmt = $db->prepare("SELECT * FROM timeline WHERE id > :since_id ORDER BY id DESC LIMIT :limit");
$stmt->bindValue( :since_id $since_id);
$stmt->bindValue( :limit $limit);
$stmt->execute();
//$result = pg_query( SELECT * FROM timeline WHERE id > 3 ORDER BY id DESC );

//$fp = fopen( sample.txt a+ );
//fwrite( $fp pg_fetch_row($result) ) ;
//fclose($fp);

//return pg_fetch_row($result) ;
return $stmt->fetchAll();
}

function output($val = array()) {
header( Content-type: application/json );
echo json_encode($val);
exit;
}


http://cryks.hateblo.jp/entry/2014/12/26/133318



必須入力がすべてはいってないとngにする あとborder
https://tanacio.com/contactform7-jquery-validation-engine/
http://studio-key.com/1139.html




・アクション一覧 つくるよ
・jsonつくる
・Swagger-PHPいれてapiドキュメント生成
・DHC
・app/config
・app/const

業務ルール一覧
業務流れ図
業務分析フォーマット


ぎょうむルール一覧
・QA 全DBに crete_at update_at いるか?
ヒアリングシート


Swagger-PHPいれてapiドキュメント生成
dingo/api

Laravelでapiを作ろうとしていて、api作るのによさげなライブラリないかなぁと探していたら、見つけた。
https://github.com/dingo/api
インストール方法や設定方法などは以下に書いてある
https://github.com/dingo/api/wiki
dingo/api
PHPのフレームワーク、LaravelにREST APIを手軽に追加できるライブラリです。REST APIだけでなく、OAuth 2.0の実装も可能で、JSON以外のフォーマットにも対応しています。API Blueprint対応のドキュメントも生成します。

JWTをPHP(php-jwt)
JWT(JSON Web Token)

api urlは
http://aaa.jp/api/create/ とかにする

ミドルウェア (Http フィルター)
Laravelは、Httpリクエストをフィルタする機能としてHttp ミドルウェアという仕組みを用意している
(4.xまではフィルターだった)
デフォルトでは、CSRFや認証などのミドルウェアが用意されている
ミドルウェアの設定は、コントローラではなく、ルーティングに記述する

CSRF対策
Laravelは、ミドルウェアを明示的に設定しなくても、デフォルトでCSRFプロテクション機能が有効になっている
そのため、POST、PUTおよびDELTEメソッド アクションを含むビューでは、CSRFトークンを含める必要がある
<?php echo csrf_field(); ?>
{!! csrf_field() !!}

dhc追加

.envファイルに環境変数を書いておく
dotenv って何かと一言で言うと Foreman の提供している アプリ側でチェックする