[libvirt] Using libvirt from PHP

Radek Hladik radek at eadresa.cz
Wed Mar 25 23:30:19 UTC 2009

Hi Russel,
	I am stick with PHP. I need to use this also in our internal 
administration system which is completely in PHP. And I would like to 
provide the possibility for other PHP developers to do at least the 
basic things (if not complete language binding) in their PHP projects. 
And not to mention my Python skills are lower than PHP ones.

The idea with "intermediate" daemon does not sound bad to me. However it 
would need to be in other language than PHP or it would only solve the 
efficiency point of view. And I do not want to introduce other language 
than C. I do not think that using one connection per complete web page 
is a major problem. Web application can be stateful using cookies, 
sessions, etc. For example for calculating CPU usage I store cputime 
values into a session every time page is loaded and I use the session 
stored value for percent calculation.
I am dividing tasks into PHP objects so I have object responsible for 
communicating with libvirt and everything else should be independent. So 
I am thinking about creating objects for direct virsh calls, zend 
extension and maybe for your daemon. However it means a lot of work to 
do and my time is limited :-(


Russell Haering napsal(a):
> Radek,
> Not to advertise blatantly, but how attached are you to PHP? I'm
> currently working on a Django (python) WebApp that (although its *very*
> pre-release) could probably be adapted to what you're doing. If you are
> interested in assisting in development you'd be welcome to, or if you
> just wanted to fork off the code into your own thing you could do that
> too. My system consists of a python daemon used for actual libvirt
> interaction and a separate django web interface that interacts with the
> daemon via AMF over https.
> If you want to stick with what you have now, you could try doing
> something similar with a python daemon (you really need something like
> that for the sake of efficiency anyway, unless you can come up with a
> better way of maintaining libvirt connections from a stateless webapp)
> that your PHP frontend connects to. Or you could just steal my daemon
> code, although at the moment all it really does is monitoring and (as of
> yesterday) live migrations.
> What I have so far: http://trac.osuosl.org/trac/virtadmin
> --
> Russell Haering
> Systems Administrator
> OSU Open Source Lab
> Radek Hladik wrote:
>> Hi,
>>     I am developing wimple web application in PHP to monitor and control
>> VMs using libvirt. I hope it could become simple library for doing basic
>> things with VMs. And I would like to ask for your opinion about
>> different possibilities of calling libvirt.
>> Option 1) I am calling virsh via exec command now (one virsh for every
>> libvirt command). This can be used for local libvirt but it is very
>> inefficient. The overhead for remote libvirt would be unbearable. I
>> could run one virsh per page and use it "interactively" so the overhead
>> gets lower.
>> Option 2) The other option is to create Zend extension which should be
>> able to call libvirt directly from C. However I've never done anything
>> like that so I do not know, whether it is reasonable or not.
>> Option 3) I could also create some "wrapper daemon" in C or other
>> language with libvirt binding. But I think that this is an ugly way :-)
>> Option 4) I could "talk" directly to the libvirt socket. But I am not
>> sure how the communication goes there and whether it is stable or
>> changes with every version. And I consider the socket to be internal
>> thing of libvirt...
>> Is there any other option I missed? And which one would you suggest?
>> Radek
>> -- 
>> Libvir-list mailing list
>> Libvir-list at redhat.com
>> https://www.redhat.com/mailman/listinfo/libvir-list

More information about the libvir-list mailing list