2016-08-10 2 views
1

私は順番に(私は編集することができません)いくつかの関数を呼び出していますが、関数のいくつかはユーザーをリダイレクトするので、次の関数には到達しません。サードパーティ機能のexit()が終了しないようにしますか?

私は防ぐことができるwp_redirect()を呼び出しているサードパーティの関数を呼び出していますが、次の行はどのように回避するのか分かりませんexit;です。

私はob_の機能でこれを回避しようとしていましたが、これまでのところ運がありませんでした。

何か提案やハッキーなどがあれば、大変感謝しています。

私はまだ試していないアイデアを持っています。何らかの形でこれらのタスクを実行するための新しいプロセスを作り出します。これを行う最良の方法は、それぞれが完了するのを待ってからです。

+0

他の関数がexitを呼び出している理由が考えられます。それを回避する方法を見つけたら、サードパーティのプログラムを壊す可能性があります。つまり、問題を回避するために['register_shutdown_function()'](http://php.net/manual/en/function.register-shutdown-function.php)することができましたが、それは呼び出される出口が1つしかないことを前提としています。 – apokryfos

+0

@apokryfos彼らはリダイレクトするだけでexitを呼び出します。 'register_shutdown_function()'の使い方についてもっと詳しく調べることができますか? – jezmck

+0

PHPがシャットダウンする直前に呼び出される関数です。スクリプトがexitまたはdieを呼び出すとき、またはスクリプトが正常に実行を終了したとき。しかし、シャットダウン機能内で呼び出された任意の出口は実際の出口であり、これ以上のシャットダウン機能は起動しません。マニュアルページはおそらくあなたのために必要なだけ詳細です。そして、他の機能がリダイレクトを要求する可能性があり、それが起こらないと正常に完了しない可能性があります。 – apokryfos

答えて

0

で最後に私はcURLを使って、異なるGETパラメータを持つファイルに対して3つの同期要求を行いました。

1

runkit_function_redefineを使用することができます。ネイティブ/内部関数を変更できるように、php.iniファイルの内部関数を変更できることを確認する必要があります。

php.iniの設定を確実にするためには、runkit.internal_overrideがオンになっている必要があります。

これはテストしていません。

しかし、exitは言語の構成要素なので、上記の関数でもそれを回避することはできません。

1

私は恐れることはできません。ネイティブPHP関数を再定義するオプションがあります。runkit_function_redefineを参照してください。

しかしコメントで、それはまた、言う:

言語でも名前を変更したり再定義することはできません、機能を持つ 混同される可能性がある (evalを、死ぬ、終了、ISSET、設定解除、エコーなど)を構築しますrunkit.internal_overrideで を使用します。私は... PHPインタプリタのソースコードを取得するには、exit関数を台無し可能であり、その後、PHPの新しいカスタムバージョンを再コンパイルし、Webサーバにインストールすると信じて

2

...

関連する問題