'PHP'에 해당되는 글 5건
- 2020.06.16 :: Laravel HTTP 세션
- 2020.06.16 :: Laravel flysystem-aws-s3-v3 확장
- 2020.06.15 :: [PHP] 텔레그램 api로 알림 받기
- 2020.06.05 :: PHP Composer 설치 및 사용법
- 2020.05.21 :: 라라벨 orm query log 남기기
session을 database로 사용할경우
session:table 아티즌 명령어를 통해서 이 마이그레이션을 생성할 수 있습니다
php artisan session:table
php artisan migrate
기본 Schema 아래와 같다
Schema::create('sessions', function ($table) {
$table->string('id')->unique();
$table->integer('user_id')->nullable();
$table->string('ip_address', 45)->nullable();
$table->text('user_agent')->nullable();
$table->text('payload');
$table->integer('last_activity');
});
.env 파일을 추가/수정해주세요.
SESSION_DRIVER=database
SESSION_LIFETIME=120
사용법
#데이터저장
$request->session()->put('key', 'value');
#데이터 삭제하기
$request->session()->forget('key');
$request->session()->flush();
#저장명령어꼭해주세요
Session::save();
//이런방법 저런 방법
#세션에 아이템 저장
Session::put('key', 'value');
#배열 세션에 값 푸쉬
Session::push('user.teams', 'developers');
세션에서 아이템 조회
$value = Session::get('key');
Session::save();
저장을 해야 다음 페이지에서 사용할수 있어요.
세션이 페이지를 벗어나 저장이 되지 않을때
use Session;
Session::save();
'PHP' 카테고리의 다른 글
Laravel flysystem-aws-s3-v3 확장 (0) | 2020.06.16 |
---|---|
[PHP] 텔레그램 api로 알림 받기 (0) | 2020.06.15 |
PHP Composer 설치 및 사용법 (0) | 2020.06.05 |
라라벨 orm query log 남기기 (0) | 2020.05.21 |
AWS S3 연결에 필요한 소스 코드를 확장 시켜 줘야 합니다.
composer require league/flysystem-aws-s3-v3
아래와 같이 결과가 수행됩니다.
2.s3 버짓 설정
버킷 생성시에는 이름 및 지역, 옵션 구성, 권한 설정, 검토의 순서로 진행되는데 다른 부분은 넘어가고 3 권한 설정에서 모든 퍼블릭 엑세스 차단을 해제해 주세요.
3.AWS 의 IAM 키생성
콘솔에 들어가서 s3를 사용할수 있는 엑세스키 생성
4.연동
.env 파일에 다음 값들을 추가해주세요.
AWS_ACCESS_KEY_ID=AGXAVIK5EY6TCTTS3I4L //IAM ACCESS KEY
AWS_SECRET_ACCESS_KEY=Awa8X1/038B6AXe1/EiDBzE9haIyfwGECgHXzABe //IAM SECRET KEY
AWS_DEFAULT_REGION=ap-northeast-2 //REGION CODE (링크 참조)
AWS_BUCKET=test-s3-buket //버킷 명
한국(서울)의 리전 코드값은, ap-northeast-2 입니다.
5.저장코드
$fileSize = $request::file($uploadName) Illuminate\Support\Facades\Request 를 이용하며, 파일의 정보를 가져옵니다.
getClientSize() = 파일 용량 반환를 반환합니다.
getClientOriginalName = 파일 명 반환를 반환합니다.
getClientOriginalExtension = 파일 확장자를 반환합니다.
Storage::disk('s3')->put(...) 는 파일을 직접 업로드 합니다.
IAM설정,S3권한설정은 다양합니다. 비교적 간단하게 설정하였고 명령어는 많다.
-복사, 삭제, 이동, 이름변경
Storage::disk('s3')->put('tmp/'.$file, file_get_contents($file) );//추가
Storage::disk('s3')->delete('tmp/' . $file);//삭제
Storage::disk('s3')->files('tmp');//리스트
Storage::disk('s3')->get($file);//내용
Storage::disk('s3')->url($file);//인터넷 주소
Storage::size('file1.jpg');//크기 조회
Storage::copy('old/file1.jpg', 'new/file1.jpg');//복사
Storage::move('old/file1.jpg', 'new/file1.jpg');//이동
Storage::files($directory);//파일 목록
Storage::allFiles($directory);//하위 폴더 포함
Storage::directories($directory);//폴더 목록
Storage::allDirectories($directory);
Storage::makeDirectory($directory);//폴더 만들기
Storage::deleteDirectory($directory);//폴더 삭제
//참고
http://stayregular.net/blog/how-to-upload-images-using-amazon-s3-and-laravel
https://dzone.com/articles/how-to-upload-files-to-amazon-s3-using-laravel
'PHP' 카테고리의 다른 글
Laravel HTTP 세션 (0) | 2020.06.16 |
---|---|
[PHP] 텔레그램 api로 알림 받기 (0) | 2020.06.15 |
PHP Composer 설치 및 사용법 (0) | 2020.06.05 |
라라벨 orm query log 남기기 (0) | 2020.05.21 |
PC/모바일 에서 아이디로 로그인후에 사용합니다.
https://telegram.me/botfather 주소로 접속합니다.
과거 BBS하는거 같죠?
/start 를 두번~ 세번 해주세요.
https://api.telegram.org/bot1156614402:AAEkQsIV22U0NF_qtEaytva3ot2pc5b8cuM/getUpdates
위주소를 처음 접속하게 되면 아무런 메세지가 없습니다.
여기서 잠시 위 내용에서 매번 이렇게 사용자를 받아야 하나요?
-> 메시지에서 특정 문자가 들어 왔을때 대화 하는 코드를 넣어 주시면 됩니다.
즉 "addid" 일경우 자동으로 message 사용자의 id를 받는 사람으로 등록하도록 하는것
삭제는 "deleteid" 처럼 하게 되면 등록 삭제를 할수 있습니다.
이런 부분을 대화로 풀면 챗봇이 됩니다. 문장을 이해 하는 것은 형태소 분석이나 키워드 조합하여 지식 DB 서치 하는 방식이거나
아이들놀이처럼 스무고개로 문제를 해결하면 멋진 챗봇 프로그램이 완성 되겠습니다.
주의 사항: 알림으로 할경우 동일한 매세지를 모든 사용자에게 보내는것과 대화 모드에서 프로그램과 그 사용자와 대화는 구조가 다릅니다. 간혹 비밀 메세지처럼 보내질거라고 생각하고 사용을 주의해주세요.
<?php
//받은 토큰값
define('BOT_TOKEN', '565256823:AAF-kLlJzCtHYh6VbmuKkcOl7u4A0ISSRus');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
//메세지 받을 사용자 아이디값
$_TELEGRAM_CHAT_ID = array('222820526');
function telegramExecCurlRequest($handle) {
$response = curl_exec($handle);
if ($response === false) {
$errno = curl_errno($handle);
$error = curl_error($handle);
error_log("Curl returned error $errno: $error\n");
curl_close($handle);
return false;
}
$http_code = intval(curl_getinfo($handle, CURLINFO_HTTP_CODE));
curl_close($handle);
if ($http_code >= 500) {
// do not wat to DDOS server if something goes wrong
sleep(10);
return false;
}
else if ($http_code != 200) {
$response = json_decode($response, true);
error_log("Request has failed with error {$response['error_code']}: {$response['description']}\n");
if ($http_code == 401) {
throw new Exception('Invalid access token provided');
}
return false;
}
else {
$response = json_decode($response, true);
if (isset($response['description'])) {
error_log("Request was successfull: {$response['description']}\n");
}
$response = $response['result'];
}
return $response;
}
function telegramApiRequest($method, $parameters) {
if (!is_string($method)) {
error_log("Method name must be a string\n");
return false;
}
if (!$parameters) {
$parameters = array();
}
else if (!is_array($parameters)) {
error_log("Parameters must be an array\n");
return false;
}
foreach ($parameters as $key => &$val) {
// encoding to JSON array parameters, for example reply_markup
if (!is_numeric($val) && !is_string($val)) {
$val = json_encode($val);
}
}
$url = API_URL.$method.'?'.http_build_query($parameters);
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($handle, CURLOPT_TIMEOUT, 60);
return telegramExecCurlRequest($handle);
}
// 메시지 발송 부분
foreach($_TELEGRAM_CHAT_ID AS $_TELEGRAM_CHAT_ID_STR) {
$_TELEGRAM_QUERY_STR = array(
'chat_id' => $_TELEGRAM_CHAT_ID_STR,
'text' => "안녕 반가워요.\nhttp://daum.net",
//<- url일경우 타입을 지정하면 자동으로 보인다.
//자세한 내용은 api를 참조
"entities"=> array(
"offset"=> 0,
"length"=> 15,
"type"=> "url"
)
);
telegramApiRequest("sendMessage", $_TELEGRAM_QUERY_STR);
}
?>
모든 길은 만든 곳의 도큐먼트에 존재 한다.
https://core.telegram.org/bots/samples
https://core.telegram.org/bots/samples/hellobot
'PHP' 카테고리의 다른 글
Laravel HTTP 세션 (0) | 2020.06.16 |
---|---|
Laravel flysystem-aws-s3-v3 확장 (0) | 2020.06.16 |
PHP Composer 설치 및 사용법 (0) | 2020.06.05 |
라라벨 orm query log 남기기 (0) | 2020.05.21 |
설치
방법1
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin/
방법2
php -r "readfile('https://getcomposer.org/installer');" | sudo php -- --install-dir=/usr/local/bin/
사용하기 쉽게 symbolic link 연결
sudo ln -s /usr/local/bin/composer.phar /usr/local/bin/composer
사용법 예시
composer require monolog/monolog 1.11.\*
'PHP' 카테고리의 다른 글
Laravel HTTP 세션 (0) | 2020.06.16 |
---|---|
Laravel flysystem-aws-s3-v3 확장 (0) | 2020.06.16 |
[PHP] 텔레그램 api로 알림 받기 (0) | 2020.06.15 |
라라벨 orm query log 남기기 (0) | 2020.05.21 |
laravel-sql-logger 패키지 사용
-
패키지 설치
composer require mnabialek/laravel-sql-logger
-
config/app.php 의 providers 등록
Mnabialek\LaravelSqlLogger\Providers\ServiceProvider::class,
-
publishing
php artisan vendor:publish --provider="Mnabialek\LaravelSqlLogger\Providers\ServiceProvider"
- config/sql_logger.php 설정
-
또는 .env 에 동작 설정
SQL_LOG_QUERIES=true
SQL_LOG_SLOW_QUERIES=true
SQL_SLOW_QUERIES_MIN_EXEC_TIME=100
SQL_LOG_OVERRIDE=false
SQL_LOG_DIRECTORY=logs/sql
SQL_CONVERT_TIME_TO_SECONDS=false
SQL_LOG_SEPARATE_ARTISAN=false
Ref
'PHP' 카테고리의 다른 글
Laravel HTTP 세션 (0) | 2020.06.16 |
---|---|
Laravel flysystem-aws-s3-v3 확장 (0) | 2020.06.16 |
[PHP] 텔레그램 api로 알림 받기 (0) | 2020.06.15 |
PHP Composer 설치 및 사용법 (0) | 2020.06.05 |