regina Tue Jan 9 21:49:22 2001 EDT
Modified files:
/phpdoc/kr/features connection-handling.xml
persistent-connections.xml remote-files.xml
Log:
Index: phpdoc/kr/features/connection-handling.xml
diff -u phpdoc/kr/features/connection-handling.xml:1.2
phpdoc/kr/features/connection-handling.xml:1.3
--- phpdoc/kr/features/connection-handling.xml:1.2 Tue Jan 9 16:39:21 2001
+++ phpdoc/kr/features/connection-handling.xml Tue Jan 9 21:49:22 2001
@@ -1,13 +1,12 @@
- <chapter id="features.connection-handling">
+ <chapter id="features.connection-handling">
<title>Connection handling</title>
<note>
- <para>The following applies to 3.0.7 and later.</para>
+ <para>이 기능은 PHP version 3.0.7 이후부터 적용된 것들이다.</para>
</note>
<para>
- Internally in PHP a connection status is maintained. There are 3
- possible states:
+ 내부적으로 PHP는 연결의 상태를 다음 3가지중 하나로
+설정한다. :
<itemizedlist>
<listitem><simpara>0 - NORMAL</simpara></listitem>
<listitem><simpara>1 - ABORTED</simpara></listitem>
@@ -16,60 +15,55 @@
</para>
<simpara>
- When a PHP script is running normally the NORMAL state, is active.
- If the remote client disconnects the ABORTED state flag is
- turned on. A remote client disconnect is usually caused by the
- user hitting his STOP button. If the PHP-imposed time limit (see
- <function>set_time_limit</function>) is hit, the TIMEOUT state flag
- is turned on.</simpara>
+ PHP 스크립트가 일반적으로 실행되고 있을 때는 NORMAL
+상태가 active된다.
+ 만약 원격 클라이언트가 연결을 끊게되면 ABORTED 상태 flag가
+켜지게 된다.
+ 보통 클라이언트가 연결을 끊는 것은 사용자가 STOP 버튼을
+눌렀을 때 일어난다.
+ 만약 PHP가 설정한 시간 제한에
+(<function>set_time_limit</function>을 보라) 걸리게 되면
+ TIMEOUT 상태 flag가 켜지게 된다.
+ </simpara>
<simpara>
- You can decide whether or not you want a client disconnect to cause
- your script to be aborted. Sometimes it is handy to always have your
- scripts run to completion even if there is no remote browser receiving
- the output. The default behaviour is however for your script to be
- aborted when the remote client disconnects. This behaviour can be
- set via the ignore_user_abort php3.ini directive as well as through
- the corresponding php3_ignore_user_abort Apache .conf directive or
- with the <function>ignore_user_abort</function> function. If you do
- not tell PHP to ignore a user abort and the user aborts, your script
- will terminate. The one exception is if you have registered a shutdown
- function using <function>register_shutdown_function</function>. With a
- shutdown function, when the remote user hits his STOP button, the
- next time your script tries to output something PHP will detect that
- the connection has been aborted and the shutdown function is called.
- This shutdown function will also get called at the end of your script
- terminating normally, so to do something different in case of a client
- diconnect you can use the <function>connection_aborted</function>
- function. This function will return true if the connection was
- aborted.</simpara>
+ 여러분은 클라이언트가 연결을 끊었을 때 스크립트가
+수행을 중단할 것인가 아닌가를 결정하여야 한다.
+ 때때로 원격 브라우저가 어떤 결과도 받아들이지 않더라도
+스크립트를 끝까지 실행하는 것이 편리할 때가 많다.
+ 기본 동작은 클라이언트가 연결을 끊으면 스크립트도
+중단되는 것이다.
+ 이 동작은 ignore_user_abort라는 php3.ini 지시자(directive)나,
+ php3_ignore_user_abort라는 Apache의 .conf의 지시자로 설정이
+가능하고,
+ <function>ignore_user_abort</function> 함수를 사용하여 설정할 수도
+있다.
+ 만약 PHP에게 사용자가 내린 중지 명령을 무시하라고
+말해주지 않았다면,
+ 사용자의 중지 신호는 여러분의 스크립트를 종료시킨다.
+ 단, <function>register_shutdown_function</function>을 사용하여
+ shutdown 함수를 등록해 놓은 경우는 예외가 된다.
+ shutdown 함수를 사용하면, 사용자가 STOP버튼을 눌렀을 때,
+ 여러분의 스크립트는 남은 출력을 하려고 하고,
+ PHP는 연결이 중단되었음을 인지하여 shutdown 함수를
+호출하게 된다.
+ shutdown 함수는 여러분의 스크립트가 정상적으로
+종료되었을 때도 호출 된다.
+ 만약 여기서 클라이언트의 연결 중단 때와 일반적인
+종료시에 다른 동작을 원한다면
+ <function>connection_aborted</function> 함수를 사용하면 된다.
+ 이 함수는 연결이 중단되었다면 true를 반환한다.
+ </simpara>
<simpara>
- Your script can also be terminated by the built-in script timer.
- The default timeout is 30 seconds. It can be changed using
- the max_execution_time php3.ini directive or the corresponding
- php3_max_execution_time Apache .conf directive as well as with
- the <function>set_time_limit</function> function. When the timer
- expires the script will be aborted and as with the above client
- disconnect case, if a shutdown function has been registered it will
- be called. Within this shutdown function you can check to see if
- a timeout caused the shutdown function to be called by calling the
- <function>connection_timeout</function> function. This function will
- return true if a timeout caused the shutdown function to be called.</simpara>
-
+ 스크립트는 내장된 타이머에 의해 종료될 수 있다.
+ 기본 timeout 시간은 30초로 되어 있다.
+ 이것은 max_execution_time이라는 php3.ini 지시자(directive)나,
+ 동일한 내용의 php3_max_execution_time이라는 Apache의 .conf
+지시자에 의해
+ 다르게 설정이 가능하고 <function>set_time_limit</function> 함수를
+사용하여 설정할 수도 있다.
+ 설정한 시간이 경과하면 스크립트는 자동으로 중단되고,
+ 이 스크립트는 위에 설명한 클라이언트와의 연결이 종료된
+것처럼 동작한다.
+ 따라서 shutdown 함수가 등록되어 있다면 이 함수가
+실행된다.
+ shutdown 함수내에서 이 함수가 timeout에 의해 호출된
+것인가를 판단하려면
+ <function>connection_timeout</function> 함수를 사용하면 된다.
+ 이 함수는 timeout에 의해 shutdown 함수가 호출되었다면 true를
+반환한다.
+ </simpara>
<simpara>
- One thing to note is that both the ABORTED and the TIMEOUT states
- can be active at the same time. This is possible if you tell
- PHP to ignore user aborts. PHP will still note the fact that
- a user may have broken the connection, but the script will keep
- running. If it then hits the time limit it will be aborted and
- your shutdown function, if any, will be called. At this point
- you will find that <function>connection_timeout</function>
- and <function>connection_aborted</function> return true.
- You can also check both states in a single call by using the
- <function>connection_status</function>. This function returns a
- bitfield of the active states. So, if both states are active it
- would return 3, for example.</simpara>
+ 한가지 유의할 사항은 ABORTED와 TIMEOUT 상태는 두 개가
+동시에 active될 수 있다는 것이다.
+ 이것은 PHP가 사용자 중단을 무시하도록 설정해 놓았을 때
+생길 수 있다.
+ 또 다른 경우는 사용자가 연결을 끊지는 않았지만 연결에
+어떤 문제가 생겨 연결이 망가진 경우로,
+ 이런 경우에 스크립트는 계속실행되고, 시간 제한에 걸려
+스크립트의 수행이 중단되고 shutdown 함수가 호출되면,
+<function>connection_timeout</function>과
+<function>connection_aborted</function>함수 모두 true를 반환하게 된다.
+ 여러분은 <function>connection_status</function> 함수를 사용하여
+두가지 상태 모두를 검사할 수 있다.
+ 함수는 각 상태에 대한 정보를 bit단위로 가지고 있다.
+ 를들어 위와같이 ABORT와 TIMEOUT 두 개의 상태가 모두
+active되어 있다면 이 함수는 3을 반환한다.
+ </simpara>
</chapter>
Index: phpdoc/kr/features/persistent-connections.xml
diff -u phpdoc/kr/features/persistent-connections.xml:1.2
phpdoc/kr/features/persistent-connections.xml:1.3
--- phpdoc/kr/features/persistent-connections.xml:1.2 Tue Jan 9 16:39:21 2001
+++ phpdoc/kr/features/persistent-connections.xml Tue Jan 9 21:49:22 2001
@@ -1,91 +1,76 @@
- <chapter id="features.persistent-connections">
- <title>Persistent Database Connections</title>
+ <chapter id="features.persistent-connections">
+ <title>영구적인 데이터베이스 접속 (Persistent database
+connections)</title>
<simpara>
- Persistent connections are SQL links that do not close when the
- execution of your script ends. When a persistent connection is
- requested, PHP checks if there's already an identical persistent
- connection (that remained open from earlier) - and if it exists, it
- uses it. If it does not exist, it creates the link. An 'identical'
- connection is a connection that was opened to the same host, with
- the same username and the same password (where applicable).
- </simpara>
- <simpara>
- People who aren't thoroughly familiar with the way web servers work
- and distribute the load may mistake persistent connects for what
- they're not. In particular, they do <emphasis>not</emphasis> give
- you an ability to open 'user sessions' on the same SQL link, they
- do <emphasis>not</emphasis> give you an ability to build up a
- transaction efficently, and they don't do a whole lot of other
- things. In fact, to be extremely clear about the subject,
- persistent connections don't give you <emphasis>any</emphasis>
- functionality that wasn't possible with their non-persistent
- brothers.
+ 영구적인 접속(Persistent connection)은 여러분의 스크립트가
+종료되어도
+ SQL link를 닫지 않는 접속을 말한다. 영구적인 접속이
+요청되면,
+ PHP는 기존의 (이전에 열어 두었던) 동일한(identical)
+영구적인 접속이 있는가를 검사한다.
+ 만약 있다면 기존의 것을 사용하고, 없다면 새로운 link를
+만든다.
+ '동일한' 접속이란 같은 호스트에 같은 사용자명과 같은
+암호를 사용한 접속을 말한다.
</simpara>
<simpara>
- Why?
+ 가끔 웹서버의 작동과 작업의 할당에 대해 잘 알고 있지
+못한 사람들은
+ 영구적인 접속이 사실은 별 것 아니라고 오해하기도 한다.
+ 특히, 영구적인 접속이 동일한 SQL link에서 'user sessions'를
+여는데 별 나을 것도 없다던가, transaction을 효율적으로
+처리하는 것도 아니라다던가, 혹은 다른 어떤
+ 특별한 것을 하는 것도 아니라고 한다. 사실, 이런 말들에
+대해 명백히 말하자면,
+ 영구적인 접속은 비영구적인 접속에 비해 어떠한 기능적인
+향상도 주지 못한다.
+ </simpara>
+ <simpara>
+ 왜?
</simpara>
<simpara>
- This has to do with the way web servers work. There are three ways
- in which your web server can utilize PHP to generate web pages.
+ 이것은 웹서버의 동작 방식에 따라 다른 효과를 낸다.
+ 여러분의 웹서버가 웹 페이지를 만들기위해 PHP를
+이용하는데는 3가지 방법이 있다.
</simpara>
<simpara>
- The first method is to use PHP as a CGI "wrapper". When run this
- way, an instance of the PHP interpreter is created and destroyed
- for every page request (for a PHP page) to your web server.
- Because it is destroyed after every request, any resources that it
- acquires (such as a link to an SQL database server) are closed when
- it is destroyed. In this case, you do not gain anything from trying
- to use persistent connections -- they simply don't persist.
- </simpara>
- <simpara>
- The second, and most popular, method is to run PHP as a module in a
- multiprocess web server, which currently only includes Apache. A
- multiprocess server typically has one process (the parent) which
- coordinates a set of processes (its children) who actually do the
- work of serving up web pages. When each request comes in from a
- client, it is handed off to one of the children that is not already
- serving another client. This means that when the same client makes
- a second request to the server, it may be serviced by a different
- child process than the first time. What a persistent connection
- does for you in this case it make it so each child process only
- needs to connect to your SQL server the first time that it serves a
- page that makes us of such a connection. When another page then
- requires a connection to the SQL server, it can reuse the
- connection that child established earlier.
- </simpara>
- <simpara>
- The last method is to use PHP as a plug-in for a multithreaded web
- server. Currently this is only theoretical -- PHP does not yet work
- as a plug-in for any multithreaded web servers. Work is progressing
- on support for ISAPI, WSAPI, and NSAPI (on Windows), which will all
- allow PHP to be used as a plug-in on multithreaded servers like
- Netscape FastTrack, Microsoft's Internet Information Server (IIS),
- and O'Reilly's WebSite Pro. When this happens, the behavior will be
- essentially the same as for the multiprocess model described
- before.
- </simpara>
- <simpara>
- If persistent connections don't have any added functionality, what
- are they good for?
- </simpara>
- <simpara>
- The answer here is extremely simple -- efficiency. Persistent
- connections are good if the overhead to create a link to your SQL
- server is high. Whether or not this overhead is really high depends
- on many factors. Like, what kind of database it is, whether or not
- it sits on the same computer on which your web server sits, how
- loaded the machine the SQL server sits on is and so forth. The
- bottom line is that if that connection overhead is high, persistent
- connections help you considerably. They cause the child process to
- simply connect only once for its entire lifespan, instead of every
- time it processes a page that requires connecting to the SQL
- server. This means that for every child that opened a persistent
- connection will have its own open persistent connection to the
- server. For example, if you had 20 different child processes that
- ran a script that made a persistent connection to your SQL server,
- you'd have 20 different connections to the SQL server, one from
- each child.
+ 첫 번째 방법은 PHP를 CGI "wrapper"이 형태로 사용하는 것이다.
+ 이 방법의 경우, 웹서버에 매 PHP 페이지가 요구될 때 마다,
+ PHP 인터프리터의 실행이 만들어지고 종료된다.
+ 따라서 매 요구가 종료될 때마다 인터프리터의 실행이
+종료되므로,
+ 실행 중 만들었던 (SQL link를 포함한) 모든 자원은 실행
+종료와 더불어 해제된다.
+ 이 경우 영구적입 접속을 사용하여 어떤 이득도 얻을 수
+없다.
+ 다르게 말하면 이 경우는 영구적인 접속을 해도 영구적이
+아니다.
+ </simpara>
+ <simpara>
+ 두 번째 방법은 가장 대중적인 방법인데,
+ PHP를 다중프로세스(multiprocess) 웹서버의 모듈로 사용하는
+것이다.
+ (현재는 Apache가 유일하다.) 다중프로세스 서버는 보통 한
+개의 부모(parent) 프로세스와,
+ 이와 유기적으로 연결되어 웹 페이지를 실제로 만드는
+작업을 하는 여러개의
+ 자식(child) 프로세스들을 가지고 있다. 클라이언트로부터
+들어오는 개별 요구는
+ 다른 클라이언트의 요구를 처리하고 있지 않고 놀고있는
+자식 프로세스로 넘겨진다.
+ 이것은 동일한 클라이언트가 서버에 두 번째 요구를 보낼
+때,
+ 보통 처음과 다른 자식 프로세스에서 처리된다는 것을
+의미한다.
+ 이 경우 영구적인 접속을 사용하면 각각의 자식
+프로세스들은
+ 자신이 처음 요구받았을 때 SQL 서버에 접속하게 된다.
+ 다른 페이지에서 SQL 서버에 접속 요구시는 이전에
+만들어진 접속을 다시 사용하게 된다.
+ </simpara>
+ <simpara>
+ 마지막 방법은 PHP를 멀티쓰레드(multithreaded) 웹서버의
+플러그-인의
+ 형태로 작동시키는 것인데, 현재 이방법은 이론적으로만
+존재하고,
+ 실제로 만들어 진 것은 없다. ISAPI, WSAPI, NSAPI (Windows에서)
+등의
+ 방법을 사용하여 Netscape FastTrack, Microsoft's Internet Information
+Server (IIS),
+ O'Reilly's WebSite Pro 등의 멀티쓰레드 웹서버에서 PHP를
+플러그-인으로
+ 동작시키려는 작업이 현재 진행중이다. 이 경우 기본
+동작은 위에서 언급한
+ 다중프로세스 모델과 동일하게 동작한다.
+ </simpara>
+ <simpara>
+ 영구적인 접속이 실제로 어떠한 기능적인 향상도 주지
+못한다면,
+ 이것을 사용해 어떤 이점이 있나요?
+ </simpara>
+ <simpara>
+ 이것에 대한 간단한 답은 효율성이다.
+ 영구적인 접속은 SQL 서버와의 link를 만드는 것에 따른
+overhead가 클 경우에 유용하다.
+ 이 overhead는 많은 요인에 따라 커지기도 하고 작아지기도
+한다.
+ 어떤 종류의 데이터베이스인가? 웹서버와 같은 컴퓨터에
+데이터베이스 서버가 있는가?
+ SQL 서버가 어떻게 사용되고 있는가? 등에 따라 크게
+달라진다.
+ 접속에 따른 overhead가 클 경우에 영구적인 접속은
+여러분에게
+ 적지 않은 도움을 줄 것이다. 이것은 자식 process에서 SQL
+서버에
+ 접속을 요청할 때 마다 접속을 만드는 대신, 이 프로세스가
+종료될 때 까지
+ 살아있는 한 개의 접속 만을 사용한다. 이것은 모든
+영구적인 접속을 사용한
+ 프로세스는, 그에 해당하는 한 대의 영구적인 접속을
+가지고 있다는 것을 의미한다.
+ 예를 들어 SQL 서버에 대하여 영구적인 접속을 사용하는
+스크립트를
+ 실행하였던 20개의 다른 자식 프로세스가 있다면,
+ 아마도 각각의 자식 프로세스에대해 1개씩, 20개의 SQL
+접속이 있을 것이다.
</simpara>
<simpara>
Note, however, that this can have some drawbacks if you are using a
@@ -99,13 +84,11 @@
information on handling abandoned or idle connections.
</simpara>
<simpara>
- An important summary. Persistent connections were designed to have
- one-to-one mapping to regular connections. That means that you
- should <emphasis>always</emphasis> be able to replace persistent
- connections with non-persistent connections, and it won't change
- the way your script behaves. It <emphasis>may</emphasis> (and
- probably will) change the efficiency of the script, but not its
- behavior!
+ 중요한 언급 한가지!
+ 영구적인 접속은 일반적인 접속에 일대일로 대응되도록
+설계되었다.
+ 이것은 스크립트의 다른 부분은 그대로 두고,
+ 언제라도 비영구적인 연결을 영구적인 연결로 대치할 수
+있다는 것을 의미한다.
+ 이것으로 여러분은 아마도 스크립트의 효율을 향상시킬
+수도 있을 것이다.
</simpara>
</chapter>
Index: phpdoc/kr/features/remote-files.xml
diff -u phpdoc/kr/features/remote-files.xml:1.2 phpdoc/kr/features/remote-files.xml:1.3
--- phpdoc/kr/features/remote-files.xml:1.2 Tue Jan 9 16:39:21 2001
+++ phpdoc/kr/features/remote-files.xml Tue Jan 9 21:49:22 2001
@@ -1,29 +1,29 @@
- <chapter id="features.remote-files">
+ <chapter id="features.remote-files">
<title>Using remote files</title>
<para>
- As long as support for the "URL fopen wrapper" is enabled when
- you configure PHP (which it is unless you explicitly pass the
- <option>--disable-url-fopen-wrapper</option> flag to configure (for versions
- up to 4.0.3) or set <parameter>allow_url_fopen</parameter> to off in php.ini
- (for newer versions),
- you can use HTTP and FTP URLs with most functions that take a
- filename as a parameter, including the <function>require</function>
- and <function>include</function> statements.
+ 여러분이 PHP를 설정할 때 "URL fopen wrapper"를 enable로
+설정하였다면
+ (이 설정은 PHP 4.0.3 이하에서는 configure 스크립트에서
+ <option>--disable-url-fopen-wrapper</option>로 명시하지 하거나,
+ 그 이후의 버전에서는 php.ini 파일에
+<parameter>allow_url_fopen</parameter>을
+ off로 설정하지 않으면 설정된다.),
+ 여러분은 파일이름을 파라메타로 가지는 대부분의 함수에
+HTTP나 FTP URL을
+ 파일이름으로 사용할 수 있다. 심지어
+<function>require</function>와
+ <function>include</function> 함수에도 사용이 가능하다.
</para>
<para>
<note>
<para>
- You can't use remote files in <function>include</function> and
- <function>require</function> statements on Windows.
+ 단, Windows환경의 <function>require</function>와
+ <function>include</function> 함수에서는 사용할 수 없다.
</para>
</note>
</para>
<para>
- For example, you can use this to open a file on a remote web server,
- parse the output for the data you want, and then use that data in a
- database query, or simply to output it in a style matching the rest
- of your website.
+ 예를 들어, 이 기능을 사용하여 원격 웹 서버가 출력하는
+내용을 파일로 열고,
+ 그 출력 내용에서 원하는 데이타를 분석하여,
+ 이 원하는 데이타로 데이타베이스 질의에 사용하거나,
+ 웹 사이트에 맞는 모양으로 변형 시켜 출력할 수 있다
</para>
<para>
<example>
@@ -51,13 +51,12 @@
</example>
</para>
<para>
- You can also write to files on an FTP as long you connect as a user
- with the correct access rights, and the file doesn't exist already.
- To connect as a user other than 'anonymous', you need to specify
- the username (and possibly password) within the URL, such as
- 'ftp://user:[EMAIL PROTECTED]/path/to/file'. (You can use the
- same sort of syntax to access files via HTTP when they require Basic
- authentication.)
+ 여러분은 해당 서버에 권한이 있는 사용자로 접속하고,
+ 해당 파일이 존재하지 않는다면, FTP를 이용한 파일에 쓸
+수도 있다.
+ 'anonymous'가 아닌 사용자로 접속하려면, URL내에 username을
+ (필요하다면 password도) 다음과 같이 명시해야 한다 :
+ 'ftp://user:[EMAIL PROTECTED]/path/to/file'.
+ (또한 HTTP에서 Basic authentication을 사용한 인증을 요구하는
+경우에도 이와 같은 문법을 사용할 수 있다.)
</para>
<para>
<example>
@@ -81,11 +80,9 @@
<para>
<note>
<para>
- You might get the idea from the example above to use this
- technique to write to a remote log, but as mentioned above, you
- can only write to a new file using the URL fopen() wrappers. To
- do distributed logging like that, you should take a look at
- <function>syslog</function>.
+ 여러분은 위의 예제를 보고, 이 테크닉을 사용하여 remote
+log를 작성할 수 있겠다고 생각할 수도 있다.
+ 그러나 위에 언급한대로 URL fopen() wrapper는 새 파일에만 쓸
+수 있다.
+ 여러분이 원하는 대로 분산된 log를 하고 싶다면
+<function>syslog</function>의 내용을 살펴보라.
</para>
</note>
</para>