是否可以与外部来源的插件进行通信?
我有一个运行wordpress的apache web服务器,我希望通过脚本自动输入触发插件中的操作。
起初我想我可能只是能够制作一个插件,它监听套接字的输入,并使用挂钩从其他插件调用正确的函数。这只会导致网站无法完全加载。
有可能吗?我是不是错过了什么?
编辑:如果有人需要澄清,请告诉我,我会尽最大努力以不同的方式解释。我意识到,可能不清楚外部输入来自哪里。它将与网站上发生的事情完全分离,更像是在服务器上本地运行的bash脚本。
Edit2:我的问题可能是Setting up an API "listening" page, 但我并不局限于一篇HTTP文章。
Edit3:我还意识到我使用的插件可能会有所帮助:(plugin.php)
$address = \'localhost\';
$port = 8888;
if(( $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false ) {
error_log("socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\\n");
}
if(socket_bind($sock, $address, $port) === false ){
error_log("socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\\n");
}
if(socket_listen($sock, 5) === false){
error_log("socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\\n");
}
socket_set_nonblock($sock);
do{
if(($msgsock = socket_accept($sock)) === false ){
error_log("socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\\n");
}
else{
do{
if( false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))){
error_log("socket_read() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\\n");
}
//Do things with buf
socket_close($msg_socket);
} while(true);
}
break;
} while(true);
socket_close($sock);
现在除了等待连接并读取2048字节外,它什么都不做,但当它转到socket\\u accept时,它会收到一个错误“Success”。
SO网友:Chris Andreikos
如果您需要独立于任何访问者操作进行操作,那么请考虑WP_Cron.
按照上述方式,您可以:
创建一个调用服务器外部内容的函数。例如:使用“curl”或REST或任何东西将该函数添加为如下操作:
add_action( \'my_task_hook\', \'my_task_function\' );
将WordPress cron设置为:
if ( ! wp_next_scheduled( \'my_task_hook\' ) ) {
wp_schedule_event( time(), \'hourly\', \'my_task_hook\' );
}
为了确保上述解决方案不考虑任何访客活动。这是一种基于WordPress Cron作业的自动方式的服务器(您的)到服务器(第三方)通信。