PHP跳过函数调用输出

时间:2017-09-05 09:10:49

标签: php mysql if-statement wrapper pchart

我有以下问题

require('drawchart.php');

if ( file_exists('drawchart.php')){ cwrapper();}

命令使用cwrapper中的'chart.png';

cwrapper是drawchart.php中的一个函数,它访问MySQL并绘制图表。这个函数在它自己和test.php中运行得非常好,但它停止在我的主程序中生成图表,我感到困惑的是它为什么它不会在那里工作。

我尝试引入sleep(30)以查看是否需要等待写入文件才能成功。但这也无济于事。下面的第二个命令永远不会选择输出文件chart.png。在两种情况下,目录都是绝对路径,所以这不是问题。

它确实在那里拾取了一个现有的chart.png但是没有应该从if调用生成的更新的那个。它似乎正在跳过对cwrapper的调用。

cwrapper使用pchart绘制图表并且它在测试文件中完全独立完成。

我该如何解决这个问题? 有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

首先,确保调用cwrapper()函数

由于您未提供drawchart.php的路径,如果当前目录中不存在,require()会在include_pathfile_exist()中指定的路径中搜索它(它可以在运行时更改)。

yesterday's solved problem不是那么幸运,它只有在当前目录中才能找到该文件。

处理这种情况的最好方法是不检查文件是否存在(谁关心它?让php.ini处理它),而是检查你要调用的函数是否存在:

require()

实际上,因为如果无法加载文件,require 'drawchart.php'; if (function_exists('cwrapper')) { cwrapper(); } 会终止脚本,所以甚至不需要检查函数是否存在。如果它在所需文件中定义,那么它在require语句返回后存在(否则脚本将被中止)。

您的代码应该简单:

require()