如何编写一个PHP的C扩展
为什么要用C扩展 C是静态编译的,执行效率比PHP代码高很多。同样的运算代码,使用C来开发,性能会比PHP要提升数百倍。IO操作如CURL,因为耗时主要在IOWait上,C扩展没有明显优势。 另外C扩展是在进程启动时加载的,PHP代码只能操作Request生命周期的数据,C
为什么要用C扩展
C是静态编译的,执行效率比PHP代码高很多。同样的运算代码,使用C来开发,性能会比PHP要提升数百倍。IO操作如CURL,因为耗时主要在IOWait上,C扩展没有明显优势。
另外C扩展是在进程启动时加载的,PHP代码只能操作Request生命周期的数据,C扩展可操作的范围更广。
第一步
下载PHP的源代码,如php-5.4.16。解压后进入php-5.4.16\ext目录。输入 ./ext_skel –extname=myext,myext就是扩展的名称,执行后生成myext目录。
ext_skel是PHP官方提供的用于生成php扩展骨架代码的工具。
cd myext。可以看到php_myext.h、myext.c、config.m4等几个文件。config.m4是AutoConf工具的配置文件,用来修改各种编译选项。
第二步
修改config.m4,将
dnl PHP_ARG_WITH(myext, for myext support, dnl Make sure that the comment is aligned: dnl [ --with-myext Include myext support])
修改为
PHP_ARG_WITH(myext, for myext support, [ --with-myext Include myext support])
下边还有一个 –enable-myext,是表示编译到php内核中。with是作为动态链接库载入的。
第三步
修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled); 这里就是扩展函数声明部分,可以增加一行 PHP_FUNCTION(myext_helloworld); 表示声明了一个myext_helloworld的扩展函数。
然后修改myext.c,这个是扩展函数的实现部分。
const zend_function_entry myext_functions[] = { PHP_FE(confirm_myext_compiled, NULL) /* For testing, remove later. */ PHP_FE(myext_helloworld, NULL) PHP_FE_END /* Must be the last line in myext_functions[] */ };
这的代码是将函数指针注册到Zend引擎,增加一行PHP_FE(myext_helloworld, NULL)(后面不要带分号)。
第四步
在myext.c末尾加myext_helloworld的执行代码。
PHP_FUNCTION(myext_helloworld) { char *arg = NULL; int arg_len, len; char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { return; } php_printf("Hello World!\n"); RETRUN_TRUE; }
zend_parse_parameters是用来接受PHP传入的参数,RETURN_XXX宏是用来返回给PHP数据。
第五步
在myext目录下依次执行phpize、./configure 、make、make install。然后修改php.ini加入extension=myext.so
执行php -r “myext_helloworld(‘test’);”,输出hello world!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le réglage fin local des modèles de classe Deepseek est confronté au défi des ressources informatiques insuffisantes et de l'expertise. Pour relever ces défis, les stratégies suivantes peuvent être adoptées: quantification du modèle: convertir les paramètres du modèle en entiers à faible précision, réduisant l'empreinte de la mémoire. Utilisez des modèles plus petits: sélectionnez un modèle pré-entraîné avec des paramètres plus petits pour un réglage fin local plus facile. Sélection des données et prétraitement: sélectionnez des données de haute qualité et effectuez un prétraitement approprié pour éviter une mauvaise qualité des données affectant l'efficacité du modèle. Formation par lots: pour les grands ensembles de données, chargez les données en lots de formation pour éviter le débordement de la mémoire. Accélération avec GPU: Utilisez des cartes graphiques indépendantes pour accélérer le processus de formation et raccourcir le temps de formation.

Il existe une variété de raisons pour lesquelles Deepseek ne peut pas se connecter, y compris la défaillance du serveur, les problèmes de connexion réseau, les désactifs du compte, les erreurs d'identification de connexion ou les mises à jour du système. Lorsque vous ne pouvez pas entrer dans le portail de connexion Deepseek, les utilisateurs peuvent accéder au site officiel via https://www.deepseek.com/. Si vous rencontrez des problèmes de connexion, les utilisateurs doivent vérifier l'état du serveur et dépanner les erreurs de connexion réseau ou de connexion. Si le problème persiste, les utilisateurs doivent contacter l'équipe de soutien Deepseek pour une aide supplémentaire.

Pourquoi le lien d'échange de Bybit ne peut-il pas être téléchargé directement et installé? Bybit est un échange de crypto-monnaie qui fournit des services de trading aux utilisateurs. Les applications mobiles de l'échange ne peuvent pas être téléchargées directement via AppStore ou GooglePlay pour les raisons suivantes: 1. La politique de l'App Store empêche Apple et Google d'avoir des exigences strictes sur les types d'applications autorisées dans l'App Store. Les demandes d'échange de crypto-monnaie ne répondent souvent pas à ces exigences car elles impliquent des services financiers et nécessitent des réglementations et des normes de sécurité spécifiques. 2. Conformité des lois et réglementations Dans de nombreux pays, les activités liées aux transactions de crypto-monnaie sont réglementées ou restreintes. Pour se conformer à ces réglementations, l'application ByBit ne peut être utilisée que via des sites Web officiels ou d'autres canaux autorisés

Cet article présente des applications et des sites Web de logiciels de devis d'actifs numériques gratuits qui peuvent fournir aux investisseurs des informations clés telles que les prix en temps réel, les graphiques de prix, le volume des transactions, les fluctuations, la profondeur du marché et les informations d'information pour aider les investisseurs à prendre des décisions éclairées. Par rapport aux logiciels payants, le logiciel gratuit présente les avantages sans frais, fonctionnalités riches et fonctionnement facile. L'article guide également les utilisateurs comment choisir le bon logiciel de marché et rappelle aux utilisateurs de faire attention aux sources de données, de précision des informations et d'éviter une dépendance excessive, ce qui aide finalement les investisseurs à mieux saisir les tendances du marché des actifs numériques. Vous voulez savoir comment utiliser efficacement les logiciels de marché libre? Lisez le texte intégral rapidement!

Titre original: Bittensor = Aibitcoin? Bittensor adopte un modèle de sous-réseau qui permet l'émergence de différentes solutions d'IA et inspire l'innovation à travers les jetons Tao. Bien que le marché de l'IA soit mûr, Bittensor fait face à des risques concurrentiels et peut être soumis à d'autres open source

Les canaux de téléchargement de l'application GATEIO Exchange pour les anciennes versions, couvrant les marchés d'applications officiels, tiers, les communautés de forum et d'autres canaux.

La liquidité du marché de la cryptographie était serrée, et le bitcoin a de nouveau baissé après avoir continué à fluctuer, atteignant un minimum de 86 000 $, en baisse de près de 20% de son apogée. Bitcoin, le leader de la crypto-monnaie, a provoqué l'effondrement des Altcoins, et le sentiment du marché est également passé du fanatisme à la panique. Le marché haussier du Bitcoin est-il terminé? Quelle est la tendance future? Ces problèmes ont attiré beaucoup d'attention. Mais les tendances de Bitcoin sont étroitement liées aux marchés financiers mondiaux, et l'article de l'analyste de la recherche de Swanbitcoin Sam Callahan sur la relation entre le prix du bitcoin et la liquidité mondiale mérite d'être lu. Le point central de l'article: Le prix du bitcoin est cohérent avec les tendances mondiales de liquidité 83% du temps, ce qui est plus élevé que les autres actifs majeurs, ce qui en fait un indicateur efficace pour mesurer les conditions de liquidité. Bien que le bitcoin soit très liquide dans le monde

Source: Bitmex Bienvenue dans notre série alpha d'options hebdomadaires: Bitcoin vient de baisser brusquement, avec une baisse de 10%. Votre portefeuille perd de l'argent et vous pouvez penser: "Que devez-vous faire ensuite? Devriez-vous paniquer, augmenter votre position ou le faire intelligemment?" Voici cinq stratégies efficaces pour les scénarios post-vente, accompagnées d'exemples, d'analyse des bénéfices et des pertes et des conseils situationnels. (À partir de cet article, le 26 février 2025, 13:06 Hong Kong, le prix de la BTC était de 88 584 $.) 1. Si vous craignez que Bitcoin continue de décliner en mars ... Pratique: Achetez des options de protection (votre stratégie d'assurance) Supposons que vous tiendrez
