問題タブ [php-internals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
9075 参照

php - 連想配列はPHPでどのように実装されていますか?

PHP が連想配列を実装する方法を誰か説明できますか? PHP が使用する基礎となるデータ構造は何ですか? PHP はキーをハッシュして、ある種のハッシュ マップに格納しますか? キーを挿入して検索するときに、連想配列のパフォーマンスがどこにあるのか疑問に思っていたので、私は興味があります。

0 投票する
2 に答える
854 参照

php - swig インターフェイスのコンパイル後にシンボルが見つからない

Linux共有オブジェクトのphpインターフェイスをコンパイルしようとしていますが、swigからの出力を使用して問題なくコンパイルできましたが、ロードしようとすると、シンボルが見つからないというエラーが表示されます。

今、私は zend を見てきましたが、それは php フレームワークのようです。リンクするライブラリが不足していると思いますが、どのライブラリかわかりません。

他の誰かが以前にこれを行い、それを機能させましたか?

編集:

0 投票する
3 に答える
9816 参照

c - Zend Engine API コードを読む: ## (ダブル ハッシュ) とはどういう意味ですか?

好奇心から、Zend Engine API コードを読んでいると、#define でかなりの数の ## に遭遇しました。たとえば、/usr/lib/php5/Zend/zend_API.h:

この 2 行の ## (ダブル ハッシュ) 記号は何を意味していますか?

0 投票する
1 に答える
580 参照

php - PHP 5.2.9 のビルドが zend_execute.lo で失敗する - メモリ不足ですか?

PHP を EXIF サポート付きでコンパイルしようとしています。CentOS 5.3 を実行している仮想専用サーバーで PHP 5.2.9 をビルドしようとするたびに、zend_execute.lo をビルドするときに失敗します。そのファイルだけをコンパイルしようとしましたが、失敗しました。[####] バイトを割り当てているメモリが不足していると言います...何か。

PHPをコンパイルするにはどうすればよいですか?

0 投票する
1 に答える
1443 参照

php - PHP拡張内で宣言されたクラスにオブジェクトプロパティとして配列を追加するにはどうすればよいですか?

PHP拡張機能で、次のPHPと同等のクラスを宣言したいと思います。

「高度なPHPプログラミング」と「PHPの拡張と埋め込み」の例に従っており、で整数プロパティを持つクラスを宣言できますPHP_MINIT_FUNCTION

ただし、同じアプローチを使用してで配列プロパティを宣言するとPHP_MINIT_FUNCTION、実行時に次のエラーメッセージが表示されます。

高度なPHPプログラミングの557ページに、配列プロパティを作成するコンストラクターを宣言する方法の例がありますが、サンプルコードはコンパイルされません(2番目の「オブジェクト」は冗長なようです)。

バグを修正し、コードに適合させました。

そしてこれはコンパイルされますが、構築時に同じランタイムエラーが発生します。

0 投票する
3 に答える
889 参照

c - PHP拡張用のzendを使用してphp.iniを読み取る(PHP言語ではない)

zendを使用してphp.iniからいくつかの設定を読み取ろうとしています。私が使用しているAPIは

ただし、常に0が返されます。名前を再確認し、php.iniで指定している値が0より大きいことを確認しました。不足しているものはありますか?

0 投票する
3 に答える
14777 参照

php - PHP 拡張機能開発入門

PHP の「低」レベルの С-modules プログラミング インターフェイスに関するヘルプ記事またはチュートリアルを提案してください。

0 投票する
1 に答える
2302 参照

java - jni のコールバック

CからコールバックをJavaコードに渡す方法はありますか。そして、呼び出しはすぐに戻ります。後でタスクを完了した後、Java コードはそのコールバックを呼び出すことができます。

一部のアイテムを格納するためにJavaストアを呼び出すphp用のC拡張機能があります。アイテムは同期および非同期メソッドでストアから取得できます (キーのリストとコールバックをストアに提供し、コールバックを呼び出してアイテムを返します)。

アイテムを拡張機能から同期的に取得することはできますが、非同期的に行う方法がわかりません。

  • 私のCコードがJavaが後で呼び出すことができる関数へのポインタを与える方法はありますか?
  • または、C コードがアイテムを非同期的に取得するように要求するたびに Java スレッドを作成し、その Java スレッドがアイテムをユーザーに返すことができる C 関数を呼び出すことは可能ですか?

最後の手段として、C コードでスレッドを作成し、Java から取得できるキーをそのスレッドでキューに入れる必要がある場合があります。

または、タスクをキューに入れることができる zend のサポートと、キュー内のすべてのタスクに対して zend が 1 つずつ呼び出すことができるコールバックはありますか?

0 投票する
1 に答える
2308 参照

php - Cで書かれたPHP拡張機能のリンク

編集:私の質問の改訂

Cで外部PHPモジュールを構築する場合、共有オブジェクトをリンクするにはどうすればよいですか?

0 投票する
2 に答える
20056 参照

php - php.ini の Extension と zend_extension の違いは何ですか?

を介して Xdebug をインストールするとpecl、次の行が php.ini ファイルに追加されました。

そして、私が使用したものはすべて機能しました。今日まで。

今日、対話型デバッグ用に Xdebug をセットアップする際に問題が発生しました。上記を次のように変更するまで、何も機能しませんでした

(注意:これが私を働かせた理由だと思いますが、100%確信はありません)

これは私の心に疑問を投げかけました。と を介して拡張機能をロードすることの違いは何extension=ですかzend_extension?