1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 325998 $ -->
<chapter xml:id="inclued.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<section xml:id="inclued.examples-implementation">
<title>Example that implements inclued into an application</title>
<para>
This example demonstrates the process of implementing inclued into
an existing application, and viewing the results.
</para>
<para>
<example>
<title>Getting the data within the PHP application itself (function)</title>
<programlisting role="php">
<![CDATA[
<?php
// File to store the inclued information
$fp = fopen('/tmp/wp.ser', 'w');
if ($fp) {
$clue = inclued_get_data();
if ($clue) {
fwrite($fp, serialize($clue));
}
fclose($fp);
}
?>
]]>
</programlisting>
</example>
</para>
<para>
Now that some data exists, it's time to make sense of it in the form of
a graph. The inclued extension includes a PHP file named
<filename>gengraph.php</filename> that creates a dot file that
requires the <link xlink:href="&url.graphviz;">graphviz</link> library.
However, this form is not required.
</para>
<para>
<example>
<title>Example use of gengraph.php</title>
<para>
This example creates an image named inclued.png that
shows the inclued data.
</para>
<programlisting role="shell">
<![CDATA[
# First, create the dot file
$ php gengraph.php -i /tmp/wp.ser -o wp.dot
# Next, create the image
$ dot -Tpng -o inclued.png wp.dot
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Listing data via inclued dumps (configuration)</title>
<para>
When using the <link linkend="ini.inclued.dumpdir">inclued.dumpdir</link>
directive, files (include clues) are dumped with every request. Here's one
way to list those files, and <function>unserialize</function> them.
</para>
<programlisting role="php">
<![CDATA[
<?php
$path = ini_get('inclued.dumpdir');
if ($path && is_dir($path)) {
echo "Path: $path", PHP_EOL;
$inclues = new GlobIterator($path . DIRECTORY_SEPARATOR . 'inclued*');
if ($inclues->count() === 0) {
echo 'No clues today', PHP_EOL;
exit;
}
foreach ($inclues as $inclue) {
echo 'Inclued file: ', $inclue->getFilename(), PHP_EOL;
$data = file_get_contents($inclue->getPathname());
if ($data) {
$inc = unserialize($data);
echo ' -- filename: ', $inc['request']['SCRIPT_FILENAME'], PHP_EOL;
echo ' -- number of includes: ', count($inc['includes']), PHP_EOL;
}
echo PHP_EOL;
}
} else {
echo 'I am totally clueless today.', PHP_EOL;
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
PATH: /tmp/inclued
Inclued file: inclued.56521.1
-- filename: /Users/philip/test.php
-- number of includes: 1
Inclued file: inclued.56563.1
-- filename: /tmp/none.php
-- number of includes: 0
Inclued file: inclued.56636.1
-- filename: /tmp/three.php
-- number of includes: 3
]]>
</screen>
</example>
</para>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|