레이블이 php인 게시물을 표시합니다. 모든 게시물 표시
레이블이 php인 게시물을 표시합니다. 모든 게시물 표시

20241226

Mac + Laravel

PHP 및 Laravel 설치 방법

1. PHP 설치

PHP를 설치하려면 아래 명령어를 실행합니다:

$ brew install php

2. Composer 설치

Composer는 PHP의 의존성 관리 도구로, 아래 명령어로 설치할 수 있습니다:

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

3. Laravel 설치

Laravel 설치를 위해 아래 명령어를 실행합니다:

$ composer global require "laravel/installer"

4. Path 설정 (추가)

Laravel 설치 후, 아래 명령어를 사용하여 Path를 설정합니다:

export PATH="$PATH:$HOME/.composer/vendor/bin"
$ source ~/.bash_profile

5. Valet 설치

Laravel Valet는 개발 환경을 관리할 수 있는 도구입니다. 아래 명령어로 Valet를 설치합니다:

$ composer global require laravel/valet
$ valet install

6. Laravel 프로젝트 설치

Laravel 프로젝트를 설치하려면 아래 명령어를 사용합니다:

$ laravel new 프로젝트이름

필요할 경우 sudo를 추가하여 설치할 수 있습니다.

7. Artisan 구동

Laravel 프로젝트를 실행하려면 아래 명령어로 Artisan 서버를 구동합니다:

$ php artisan serve

8. Artisan key error 시 해결 방법

Artisan key 오류가 발생할 경우, 아래 명령어로 해결할 수 있습니다:

$ sudo php artisan key:generate

20150624

'PHP 7'에 대해 반드시 알아야 할 것 5가지

어제 Zend사의 뉴스레터로 재미있는 것이 왔습니다. 바로 PHP의 다음 버전인 'PHP 7'에 대한 것입니다. "'PHP 7'에 대해 반드시 알아야 할 것 5가지"라는 거창한(?) 제목의 메일인데 본문에는 'PHP 7'에 대한 인포그래픽 페이지로의 링크를 가지고 있었습니다. 그 인포그래픽 페이지에 있는 내용을 정리해보겠습니다. 참고로 현재 PHP의 최신 버전이 5.6인데 차기 버전 넘버가 7이 된 것은 개발이 취소된 'PHP 6'와의 구별을 위한 것이라고 합니다.

1. 'PHP 7'은 2015년 10월 릴리즈 예정

2015년 6월 중순에 RC 버전이 나오고 10월 중순에 릴리즈가 목표라고 합니다.


2. 복합연산자 도입

루비 등에 있는 <=> 복합연산자가 도입됩니다. strcmp()와 비슷한 동작을 하는 함수인데 문자 타입에 대한 비교를 하는 strcmp()와는 달리 <=> 복합연산자는 배열이나 객체에도 사용할 수 있는 것이 다릅니다. usort() 함수의 콜백 함수와 같이 정렬 기능을 만들때 효율적이라고 합니다.


3. 함수 리턴 타입 선언 및 스칼라 타입 힌트 추가

이제 PHP도 Java와 같은 언어처럼 함수의 리턴 타입을 선언할 수 있습니다. 거기에 기존 'PHP 5'에서는 데이터 타입 힌트를 배열과 객체에만 사용할 수 있었는데 일반 스칼라 타입에도 타입 힌트를 사용할 수 있게 되었습니다.


4,5. 빠른 속도

4번과 5번 항목은 속도에 대한 이야기입니다. '빠르다. 그리고, 점점 더 빨라지고 있다' (ㅡ.ㅡ;) Zend쪽에서는 페이스북이 만든 HHVM보다 빠르다라고 이야기하는 것 같습니다. 현재 기준으로 'PHP 7'이 PHP 5.6보다 25%에서 최대 70% 정도까지 성능향상이 있다고 합니다.



http://www.just4fun.kr/2015/03/php-7-5.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+just4fun%2FIZeD+%28just+for+fun%29

HHVM下fastcgi_finish_request的替代方案

最近在研究与迁移HHVM,在过程中遇到不少坑,比如遇到了fastcgi_finish_request这个函数问题。

fastcgi_finish_request是由FPM特供的一个函数,主要实现了在结束http请求之后,php-cgi仍然继续执行fastcgi_finish_request后面的代码,可以实现的一个简单的异步操作,具体使用可以参考之前的文章:《使用fastcgi_finish_request()提高请求响应速度》

在不断摸索之后,终于找到了HHVM下fastcgi_finish_request的替代方案,

HHVM 也提供了一个类似的函数:register_postsend_function


以上是HHVM官方的idl,对此函数的描述,它实现了类似fastcgi_finish_request的功能,由于官方wiki非常少,
在尝试之后,此函数的使用方式如下:
register_postsend_function是注册一个回调函数用于http请求结束时触发,参数类似call_user_func,

用法如下:



中第一个参数为回调函数,可以是一个匿名函数,也可以是预定义的函数,也可以是类的公共函数或静态函数,
后续的参数对应于传入回调函数的形参。

如:


或者:



以上两个例子中的$a对应于传入的形参$bar
在类中使用如下


使用注意:

因为register_postsend_function是注册回调函数,并且是在http结束之后才会触发,

并不像fastcgi_finish_request是直接在上下文中,
所以它并没有保持发起此函数时的上下文,回调函数里面的现场需要显式的还原,可以通过函数参数来还原现场。

使用fastcgi_finish_request()提高请求响应速度

PHP가 FastCGI 모드로 실행될 때, PHP-FPM은 fastcgi_finish_request라는 메서드를 제공합니다. 문서에 따르면 이 메서드는 요청 처리 속도를 향상시킬 수 있으며, 페이지 생성 후에 수행할 수 있는 처리가 있다면 이 메서드를 사용할 수 있습니다.이해를 돕기 위해 몇 가지 예제를 살펴보겠습니다:
php
echo 'start:'; fastcgi_finish_request(); /* response */ file_put_contents('log.txt', 'finish');
브라우저로 이 스크립트에 접근하면, 해당 문자열이 출력되지 않았지만 파일이 생성된 것을 확인할 수 있습니다. 이는 fastcgi_finish_request 호출 후 클라이언트 응답이 이미 종료되었지만, 서버 측 스크립트는 계속 실행되고 있음을 보여줍니다!이 특성을 적절히 활용하면 사용자 경험을 크게 향상시킬 수 있습니다. 다음은 또 다른 예제입니다:
php
echo 'start:'; file_put_contents('log.txt', date('Y-m-d H:i:s') . " 비디오 업로드\n", FILE_APPEND); fastcgi_finish_request(); sleep(1); file_put_contents('log.txt', date('Y-m-d H:i:s') . " 형식 변환\n", FILE_APPEND); sleep(1); file_put_contents('log.txt', date('Y-m-d H:i:s') . " 이미지 추출\n", FILE_APPEND);
이 코드에서는 sleep을 사용하여 시간이 걸리는 작업을 시뮬레이션합니다. 브라우저에서 볼 때 차단되지 않지만 프로그램은 모두 실행되었으며, 자세한 내용은 로그를 확인하면 됩니다.마지막으로 한 가지 팁을 드리자면, Yahoo의 "웹사이트 속도 향상을 위한 모범 사례"에서 언급된 "버퍼를 일찍 플러시하기"는 PHP의 flush 메서드를 사용하여 내용을 가능한 빨리 클라이언트로 보내는 것을 의미합니다. 이는 이 글에서 소개한 fastcgi_finish_request와 약간 유사합니다.추가 설명: 이 메서드를 호출하면 응답을 보내고 연결을 닫습니다. 그러나 PHP 실행은 종료되지 않습니다. flush를 호출하거나 이전에 소개한 echo 가속화 방법과 비교하면, 이 방법이 더 확실합니다.또한 코드의 이식성을 고려하면 다음과 같은 코드를 추가할 수 있습니다:
php
if (!function_exists("fastcgi_finish_request")) { function fastcgi_finish_request() { } }