求助关于php执行指令与跨控制器使用方法的问题

#1 cystone

求助

1、$mysqlstr = "mysqldump -uroot -h127.0.0.1 -p111 --opt -B db_app1 > ./bak/".$_POST['b_name'];
     echo shell_exec($mysqlstr)."
";
命令执行后,bak目录下生成的文件是空文件。数据库没有备份

2、
controller1.php中
class controller1 extends spController{
  function action1(){}
}

controller2.php中
class controller2 extends spController{
  function action2(){}
}

现在我想要在action2中使用 controller1的action1,应该如何做?

2010-01-29 12:17:28

#2 jake

1. 关于这些命令的事情,我不是很清楚,只能建议看看PHP关于这方面的介绍,能不能帮到楼主
http://www.php.net/manual/en/function.shell-exec.php
2.
import(路径/controller1文件); // 由于controller文件一般不在自动搜索的目录,所以要通过路径引入该文件,在引入的时候,建议善用APP_PATH这个常量!
spClass("controller1")->action1(); // 执行action1

2010-01-29 12:51:59

#3 cystone

谢谢jake大哥

2 解决
1 实在搞不定,晕

2010-01-29 13:57:01

#4 cystone

1 解决了。
windows中
即使系统环境变量path中指定了mysqldump的路径,仍然要在$mysqlstr 中写绝对路径
如果路径中有空格,必须要用" "将该路径括起来,最外层用' '。
例如:$mysqlstr = 'D:\"Program Files"\MySQL-5.0.83\bin\mysql -uroot -h127.0.0.1 -p111 db_app < ./bak/'.$_POST['r_name'];

2010-01-29 14:52:40

#5 jake

Jake,假如 spClass("controller1")->action1(); // 执行action1 这个ACTION 需要带一个参数才能执行,这里 ...
wznjsy 发表于 2011-5-18 19:51
可以用 $this->spArgs() 也可以 action1($id) 这样用参数

2011-05-18 20:58:27

#6 jake

可以用 $this->spArgs() 来获取参数,或者用action1($id)来获取。对参数赋值那就更简单 spClass("controller1")->action1(1234);或者$a=1;pClass("controller1")->action1($a);

2011-05-18 21:18:14