あああ
あああ
★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 の提供している アプリ側でチェックする