| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <title>miscellaneous mod_dtcl documentation</title> |
| <link rel="stylesheet" href="style.css"> |
| </head> |
| <body> |
| <h2>Other mod_dtcl Documentation</h2> |
| |
| <h3>Internals</h3> |
| <ul> |
| <li><b>Read the code!</b></li> |
| <li> |
| <b>Initialization</b><br> |
| |
| When Apache is started, (or when child Apache |
| processes are started if a threaded Tcl is used), |
| <code>tcl_init_stuff</code> is called, which creates |
| a new interpreter, and initializes various things, |
| like the <code>apache_channel</code> channel system. |
| The caching system is also set up, and if there is a |
| GlobalScript, it is run. |
| </li> |
| <li><b>Achan/apache_channel</b><br> |
| |
| The "Apache Channel" system was created so that it is |
| possible to have an actual Tcl channel that we could |
| redirect standard output to. This lets us use, for |
| instance, the regular "puts" command in .ttml pages. |
| It works by creating commands that write to memory |
| that is slated to be sent to the client. |
| </li> |
| |
| <li><b>Page parsing/execution</b><br> |
| |
| In <code>send_parsed_file</code> Each .ttml file is |
| loaded and run within its own namespace. No new |
| interpreter is created for each page. This lets you |
| share variables, and most importantly, loaded modules, |
| from a common parent (such as one of the InitScripts). |
| When a file is loaded, it is transformed into a Tcl |
| script by putting everything outside of <? and |
| ?> into large hputs statements. When the script is |
| complete, it is then inserted into the cache, for |
| future use. In fact, if the file modification |
| information doesn't change, mod_dtcl will execute the |
| cached version of the script the next time it is |
| encountered. |
| </li> |
| <li><b>Binary data</b><br> |
| mod_dtcl is capable of outputing binary data, such as |
| images, or loading binary data with 'include'. |
| </li> |
| </ul> |
| |
| <h3>Upgrading From Older (< 0.9.3) Versions</h3> |
| <ul> |
| <li><b>New tags</b><br> As of version 0.9.4, mod_dtcl uses |
| <? and ?> instead of <+ and +> to delimit |
| sections of Tcl code. By default, dtcl is still compiled |
| with code to parse the <? ?> tags, but it will run |
| faster if <code>USE_OLD_TAGS</code> is set to 0 in |
| <code>mod_dtcl.h</code>. You can automatically change your |
| .ttml files to the new format by using the |
| <code>newtags.sh</code> script in the contrib/ directory. |
| Run it at the top level of your DocumentRoot. |
| </li> |
| <li><b>headers setcookie</b><br> |
| The <code>headers setcookie</code> command now uses the |
| <code>-name</code> and <code>-value</code> flags for those |
| arguments, whereas this was not necessary in the past. |
| </li> |
| </ul> |
| </body> |
| </html> |
| <!-- $Id$ --> |