我现在的需求是这样的...
服务器端在跑程序while(true);//无限循环接受信息...具体代码就不贴出了.//动态加载类..
function __autoload($className) {
    include_once 'Controller/'.$className . '.php';
} 问题:
    比如加载了文件 .a.php... 这个文件我不管怎么修改. 都无效. 包括删掉........我个人认为. 解决这个问题 可以采用.重新再次加载类.但是不知道怎么写..请高手门赐教.. 别的方式也可以..分不多..没分了. 赌博输了....

解决方案 »

  1.   

    补充:
    我的程序 是需要在linux服务器后台 跑的
    我需要的结果是一修改文件.就会重新加载文件.我还想多.采用进程 重新这个文件..但是端口不能变. 变了. session就没了.有操作进程这种方式的. 也可以说说....
      

  2.   

    既然是 include_once 已加载就不加载
    那么怎么还企望 重新再次加载 呢?
      

  3.   

    加载的 文件. 我修改以后. 他还是加载以前的文件...我需要做的功能就是远程维护 服务器端 跑的文件...比如. 以前文件内容是 echo "我是老的";现在, 我从本地修改远程文件为 .echo "我是新的";但是.他还是运行以前的输出结果.
      

  4.   

    PHP 里有对 class 的 unload 功能吗?如果没有的话,你这种方式就从根本上成为“不可能”了……
      

  5.   

    你既然是一直 while ,就是一直在执行,己经加载了,就不会再加载了,你修改文件对程序没有影响啊
      

  6.   

    看看这个对你有没有帮助:runkit_import — Process a PHP file importing function and class definitions, overwriting where appropriate
      

  7.   

    放入session 或者定义静态变量当它们不存在的时候去文件里读取
      

  8.   

    程序载入内存后,改变硬盘上的文件对内存里的内容无影响.所以你需要重新运行或重启进程. 所以你可以让该服务程序用system调用要执行的部分的程序. 或者,
    估计你完全不需要那个服务程序,只要用cronjob重复定时执行该程序即可,更改后的文件将在下次执行是载入
      

  9.   

    include_once只在第一次运行的时候加载,所以我建议你可以用
    File_Get_Contents('Controller/'.$className . '.php);取得源码内容
    然后使用eval这个函数来执行刚取得的源码
      

  10.   

    用 include 会报错的吧?重新包含一个文件,会导致“function 或 class 重定义”。
      

  11.   


    解决个这问题很简单, 用 function_exists, class_exists
      

  12.   

    function_exists, class_exists
    那就不能再次载入了
      

  13.   

    while(1){
    $temp=filetime
    if $temp<$newfiletime {
    exit while or break;
    header(localtion:filename):
    }
    )不知道可行不????
      

  14.   

    非常谢谢 这么多人帮我解决问题...我贴出源代码 给大家看看吧....<?php
    $gmworker= new GearmanWorker();
    $gmworker->addServer();$gmworker->addFunction("goods", "run");
    while($gmworker->work())
    {
    if ($gmworker->returnCode() != GEARMAN_SUCCESS)
    {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
    }
    }function run($job)
    {
        //clearstatcache();
        
        $data = unserialize($job->workload());
        $func = $data['type'].'Initial';
        $wine = new $func($data);
        return serialize($wine->run());
    }function __autoload($className) {
        include 'Controller/'.$className . '.php';
    }
    ?>autoload他只会从头到尾执行一次.. 我在修改文件.他就不执行了....有人对 autoload 有了解的吗. 普通采用include 会报 class 以定义的..