0

私は問題があります; 実際、私はそれに対する解決策を見つけることができませんでした。

cron_hourly.php というファイルがあります

このファイルはいくつかのタスクを実行し、cronjob によって実行されることになっています。同じスキーマと構造を持つ 4 つの異なるデータベースを持つ 4 つのサイトを所有しています。(4 つのサイトはほぼ同じです); 4 つのデータベースは、保持するデータが異なるだけです。

4 つのデータベースに対してこのファイルを実行する必要があります。データベースに対していくつかのクエリを実行し、いくつかの情報を電子メールで送信します。いくつかのホスティング制限のため; 使用できる cronjob は 1 つだけです。したがって、同じタスクを実行する4つの異なるディレクトリに4つのcron_hourlyがありますが、異なるデータベース上にあります! したがって、いくつかの関数と変数があります。実際には、異なるデータベースに接続することを除いて、それらは同じです! 問題は; 以下のコードを使用しようとすると

     include 'path1/cron_hourly.php';
     include 'path2/cron_hourly.php';
     include 'path3/cron_hourly.php';
     include 'path4/cron_hourly.php';

'Cannot redeclare someFunction() (previously defined in '' というエラーが表示されます。実際には、関数が他のディレクトリの同じファイルで既に宣言されているため、これは理にかなっています。

それどころか; include_once を使用すると、含まれる最初のファイルのみが実行され、他のファイルは実行されません! これを回避できるものはありますか?このエラーを発生させずに 4 つのファイルを実行したい! ところで; if(function_exists()) は役に立ちません! 前に言ったように、ファイルごとに関数を何度も再宣言する必要があるため..

4

1 に答える 1

1

あなたがする必要があるのは名前空間を使うことです、ここでもっと見てください:

http://php.net/manual/en/language.namespaces.rationale.php

于 2012-08-21T02:25:06.153 に答える