2024-10-01 09:22:10 发布
网友
我正在建立一个joomla3web站点,但是我需要定制相当多的页面。我知道我可以在Joomla中使用PHP,但是Python是否也可以与它一起使用呢?具体来说,我希望使用CherryPy编写一些自定义代码,但我希望它们显示在本地Joomla页面中(而不仅仅是iframe)。这可能吗?在
PHP执行Python“脚本”
这将适用于脚本,脚本执行任务并返回输出,而不是CherryPy。在
<?php // execute your Python script from PHP $command = escapeshellcmd('myPythonScript.py'); $output = shell_exec($command); echo $output; // take response content to embed it into the page ?>
PHP访问Python/CherryPy服务的网站
这将启动一个http://localhost:8080,您应该看到Hello world!。在
http://localhost:8080
Hello world!
现在您可以通过访问CherryPy的localhost:port来访问它的输出。 表现不好,但很管用。在
localhost:port
<?php $output = file_get_contents('http://localhost:8080/'); echo $output; ?>
Joomla+Ajax访问pyton/CherryPy服务的网站
另一种解决方案是,不使用PHP获取内容,而是从客户端执行获取。基本上,您将使用Ajax请求到CherryPy服务的网站,获取其内容并将其嵌入Joomla服务页面的dom中。在
// add jQuery Ajax reqeust from your Joomla page to CherryPy $.ajax({ url: "https://localhost:8080/", // <-- access the 2nd served website type: 'GET', success: function(res) { //console.log(res); alert(res); $("#someElement").html(res); } });
从不同来源(Joomla和CherryPy)构造页面的最有效方法可能是使用Edge Side Includesesi。在
基本上,您运行一个Joomla实例,该实例为包含ESI标记的文档提供服务。您可以运行一个CherryPy实例,该实例为您想要放置在esi标记位置上的片段提供服务。然后运行一个支持ESI-like-varnish的反向代理来将它们缝合在一起。在
这看起来像是很多运动部件,但它的反应就像。。。真正有反应的东西。调整缓存部分,可以减轻Joomla和数据库的大量工作。在
其他答案中的exec方法适用于打印某些内容的小python脚本,但对于CherryPy来说,不是。在
exec
您可以通过php文件执行它。试试这个:
exec("python/path/your-script.py");
PHP执行Python“脚本”
这将适用于脚本,脚本执行任务并返回输出,而不是CherryPy。在
PHP访问Python/CherryPy服务的网站
^{pr2}$这将启动一个
http://localhost:8080
,您应该看到Hello world!
。在现在您可以通过访问CherryPy的
localhost:port
来访问它的输出。 表现不好,但很管用。在Joomla+Ajax访问pyton/CherryPy服务的网站
另一种解决方案是,不使用PHP获取内容,而是从客户端执行获取。基本上,您将使用Ajax请求到CherryPy服务的网站,获取其内容并将其嵌入Joomla服务页面的dom中。在
从不同来源(Joomla和CherryPy)构造页面的最有效方法可能是使用Edge Side Includesesi。在
基本上,您运行一个Joomla实例,该实例为包含ESI标记的文档提供服务。您可以运行一个CherryPy实例,该实例为您想要放置在esi标记位置上的片段提供服务。然后运行一个支持ESI-like-varnish的反向代理来将它们缝合在一起。在
这看起来像是很多运动部件,但它的反应就像。。。真正有反应的东西。调整缓存部分,可以减轻Joomla和数据库的大量工作。在
其他答案中的
exec
方法适用于打印某些内容的小python脚本,但对于CherryPy来说,不是。在您可以通过php文件执行它。试试这个:
相关问题 更多 >
编程相关推荐