2011-11-24 2 views
0

내가 지금 $ _SERVER 또는 (자세한 내용 PHP Manual Superglobals 참조) 다른 날, 같은 SuplerGlobals에 대해 뭔가를 읽었는데, 나는 나를 부탁 해요 :PHP의 자체 슈퍼 글로벌 변수?

그것은 자신의 슈퍼 전역을 구현 할 수 있습니까? 상수 옆 ...

예를 들어 사용자 A는 사용자 B가 호출 할 수있는 변수에 무언가를 씁니다. 서버 전체 세션 변수 또는 이와 비슷한 것입니다. 하지만 어쩌면 그 바보 같은 질문 : 내가 아는 방법 중 몇은 SQL, XML 및 물건처럼 외부가있는 경우

이 ..., 열심히하지 마십시오

이 불가능

답변

2

PHP는 사용자간에 공유 할 수있는 컨텍스트가없는 enveroinment 변수를. SQL 서버 나 파일과 같은 대체물을 사용해야합니다. 목표를 달성하는 데 도움이되는 memcache과 같은 일부 확장 프로그램을 확인할 수도 있습니다.

+0

독일어 페이지입니다. 찾는 사람 : [링크] (http://www.web-skripte.de/script_memcache.htm) 감사합니다! – Harry

1

, 자신의 세션 데이터 만 볼 수 있습니다.

이 작업을 수행하려면 데이터를 다른 곳에 저장해야합니다. 텍스트 파일이나 MySQL 데이터베이스에서 가장 일반적 일 것입니다.

+0

파일을 사용하여 파일을 확장하는 것은 어렵고 (아마도 빠르지는 않을 것입니다.) 데이터베이스입니다. 알았습니다.하지만 그 파일은 내가 아는 것이 었습니다. 어쨌든 고마워요. – Harry

3

여러분의 PHP 전역에 대한 잘못된 생각은 틀립니다.
이러한 변수는 항상 스크립트 런타임 하나만으로 사용할 수 있으며 전체 사이트는 사용할 수 없습니다. 당신이 아파치 다음 사용하는 경우

...

+0

조언 주셔서 감사합니다. 너는 완전히 옳다. – Harry

0

는 내가 별표를 =`포함하는 방법을 알고, 당신이 (asterix)export yourvar="something"(asterix)을 사용할 수 있으며

SRY를 GetEnv를 사용하여받을 해달라고 생각하지만, 그것을 피하기 위해 더 낫다 사용할 수 : http://php.net/manual/en/function.apache-setenv.php

같은 생각,

+1

env 변수가 작동하지 않습니다. 로컬 컨텍스트에만 설정됩니다 –

+0

틀렸어. PHP가 콘솔에서 실행되면 - 공유됩니다. setenv를 사용하여 공유하지 않을 경우, assterix와의 호출을 사용하여 공유 할 수 있습니다. php가 아파치를 통해 실행된다면 http://php.net/manual/en/function.apache-setenv.php와 공유 될 것이므로, 그러한 문장을 만들기 전에 매뉴얼을 더 잘 읽어야합니다. – Tigra

+0

흠. 빠른 테스트를 통해 별도의 요청에서 가치를 얻을 수 없었습니다. 이런 식으로 작동한다고 확신합니까? –

2
나는 $ _SERVER 나 같은 SuplerGlobals에 대해 뭔가를 읽고 있었다

(PHP 매뉴얼 슈퍼 전역 자세한 내용을 참조) 다른 일, 지금 내가 나를 부탁 해요 :

이 자신의 슈퍼 전역을 구현 할 수 있습니까? 상수 옆 ...

예. PHP runkit 확장자가있는 경우 가능합니다.

그래서 예를 들어 사용자 A는 자동 전역이 할 무엇 즉, 사용자 B가 호출하는 경우가

을 볼 수 있습니다, 변수에 뭔가를 기록 - 그들이 즉 글로벌 범위에 존재하는 변수 (이다 스크립트 인스턴스의 지속 기간).

다른 호출간에 데이터를 공유하려는 경우 저장소 계층 또는 단일 클라이언트의 데이터 인 경우 브라우저로 보내야합니다.

여기서 설명하는 내용은 효과적으로 공유 세션이므로이를 구현하는 합리적인 장소는 세션 처리기에 있습니다.