Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elphel-web-393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Elphel
elphel-web-393
Commits
36e20c2f
Commit
36e20c2f
authored
Dec 02, 2016
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
forgot to add
parent
bd862e51
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
192 additions
and
0 deletions
+192
-0
eyesis4pi_interface.php
src/eyesis4pi/eyesis4pi_interface.php
+1
-0
parallel_requests.php
src/php_top/parallel_requests.php
+90
-0
response.php
src/php_top/response.php
+101
-0
No files found.
src/eyesis4pi/eyesis4pi_interface.php
View file @
36e20c2f
...
...
@@ -39,6 +39,7 @@ switch($cmd){
break
;
case
"free_space"
:
if
(
$_GET
[
'mountpoint'
]
==
"/mnt/sda2"
){
respond_xml
(
"test"
);
//unpartitioned area
}
else
{
if
(
is_dir
(
$mountpoint
))
$res
=
disk_free_space
(
$mountpoint
);
...
...
src/php_top/parallel_requests.php
0 → 100644
View file @
36e20c2f
<?php
/*!***************************************************************************
*! FILE NAME : parallel_requests.php
*! DESCRIPTION: send out parallel url requests and collect responses
*! Copyright (C) 2016 Elphel, Inc
*! -----------------------------------------------------------------------------**
*!
*! This program is free software: you can redistribute it and/or modify
*! it under the terms of the GNU General Public License as published by
*! the Free Software Foundation, either version 3 of the License, or
*! (at your option) any later version.
*!
*! This program is distributed in the hope that it will be useful,
*! but WITHOUT ANY WARRANTY; without even the implied warranty of
*! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*! GNU General Public License for more details.
*!
*! You should have received a copy of the GNU General Public License
*! along with this program. If not, see <http://www.gnu.org/licenses/>.
*! -----------------------------------------------------------------------------**
*/
// Using parallel requests, PHP has to be configured '--with-curl=' (and libcurl should be installed)
function
curl_multi_start
(
$urls
)
{
// numprime is needed to actually send the request and remote starts executing it
// Not really clear - what it should be
$numprime
=
4
;
// magic number, see http://lampe2e.blogspot.com/2015/03/making-stuff-faster-with-curlmultiexec.html
$curl_mh
=
curl_multi_init
();
$aCurlHandles
=
array
();
foreach
(
$urls
as
$url
)
{
$ch
=
curl_init
();
curl_setopt
(
$ch
,
CURLOPT_URL
,
$url
);
curl_setopt
(
$ch
,
CURLOPT_RETURNTRANSFER
,
1
);
curl_setopt
(
$ch
,
CURLOPT_HEADER
,
0
);
$aCurlHandles
[]
=
$ch
;
curl_multi_add_handle
(
$curl_mh
,
$ch
);
}
$curl_active
=
count
(
$urls
);
for
(
$x
=
0
;
$x
<
$numprime
&&
$curl_active
;
$x
++
)
{
curl_multi_exec
(
$curl_mh
,
$curl_active
);
// we wait for a bit to allow stuff TCP handshakes to complete and so forth...
usleep
(
10000
);
// echo ".";
}
return
array
(
"mh"
=>
$curl_mh
,
"handles"
=>
$aCurlHandles
);
}
function
curl_multi_finish
(
$data
,
$use_xml
=
true
,
$ntry
=
0
,
$echo
=
false
)
{
$curl_active
=
1
;
$curl_mrc
=
CURLM_OK
;
$nrep
=
0
;
$curl_mh
=
$data
[
'mh'
];
while
(
$curl_active
&&
$curl_mrc
==
CURLM_OK
)
{
if
(
curl_multi_select
(
$curl_mh
)
!=
-
1
)
{
do
{
$curl_mrc
=
curl_multi_exec
(
$curl_mh
,
$curl_active
);
}
while
(
$curl_mrc
==
CURLM_CALL_MULTI_PERFORM
);
}
if
(
$echo
)
echo
colorize
(
"
$curl_active
"
,
'YELLOW'
,
1
);
$nrep
++
;
if
(
$ntry
&&
(
$nrep
>
$ntry
))
{
break
;
}
}
$results
=
array
();
if
(
$use_xml
)
{
foreach
(
$data
[
'handles'
]
as
$i
=>
$ch
)
{
$xml
=
simplexml_load_string
(
curl_multi_getcontent
(
$ch
));
curl_multi_remove_handle
(
$curl_mh
,
$ch
);
$results
[
$i
]
=
array
();
foreach
(
$xml
as
$tag
=>
$value
)
{
$svalue
=
(
string
)
$value
;
if
(
strlen
(
$svalue
)
>
0
)
{
if
(
$svalue
[
0
]
==
'"'
)
$results
[
$i
][
$tag
]
=
trim
(
$svalue
,
'"'
);
else
$results
[
$i
][
$tag
]
=
(
int
)
$svalue
;
}
}
}
}
else
{
foreach
(
$data
[
'handles'
]
as
$i
=>
$ch
)
{
$r
=
curl_multi_getcontent
(
$ch
);
curl_multi_remove_handle
(
$curl_mh
,
$ch
);
$results
[]
=
$r
;
}
}
curl_multi_close
(
$curl_mh
);
return
$results
;
}
?>
src/php_top/response.php
0 → 100644
View file @
36e20c2f
<?php
/*
*!***************************************************************************
*! FILE NAME : include_response.php
*! DESCRIPTION: http requests response functions
*! Copyright (C) 2016 Elphel, Inc.
*! --------------------------------------------------------------------------
*! This program is free software: you can redistribute it and/or modify
*! it under the terms of the GNU General Public License as published by
*! the Free Software Foundation, either version 3 of the License, or
*! (at your option) any later version.
*!
*! This program is distributed in the hope that it will be useful,
*! but WITHOUT ANY WARRANTY; without even the implied warranty of
*! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*! GNU General Public License for more details.
*!
*! You should have received a copy of the GNU General Public License
*! along with this program. If not, see <http://www.gnu.org/licenses/>.
*! --------------------------------------------------------------------------
*/
function
get_uptime
(){
exec
(
'cat /proc/uptime'
,
$output
,
$retval
);
return
floatval
(
explode
(
" "
,
trim
(
$output
[
0
]))[
0
]);
}
//printf("%08.2f\n",$f);
function
log_open
(){
$GLOBALS
[
'logFile'
]
=
fopen
(
$GLOBALS
[
'logFilePath'
],
"a"
);
}
/** Log message and optionally print to console */
function
log_msg
(
$msg
,
///< message to print
$mode
=
-
1
)
///< -1 - print only short messages, 0 - never print, 1 - always print, 2 print in bold red (error), 3 - bold white, 4 - bold yellow (warning)
{
// do not output log when in HTTP request mode
$ut
=
get_uptime
();
if
((
$mode
!=
0
)
&&
!
array_key_exists
(
'REQUEST_METHOD'
,
$_SERVER
)
&&
((
$mode
>
0
)
||
(
strlen
(
$msg
)
<
$GLOBALS
[
'LOG_MAX_ECHO'
])))
{
switch
(
$mode
)
{
case
2
:
$emsg
=
colorize
(
$msg
,
'RED'
,
1
);
// bold red
break
;
case
3
:
$emsg
=
colorize
(
$msg
,
''
,
1
);
// bold white
break
;
case
4
:
$emsg
=
colorize
(
$msg
,
'YELLOW'
,
1
);
// bold white
break
;
default
:
$emsg
=
$msg
;
}
printf
(
colorize
(
sprintf
(
"[%8.2f] autocampars: "
,
$ut
),
"GREEN"
,
0
)
.
$emsg
.
"
\n
"
);
}
fwrite
(
$GLOBALS
[
'logFile'
],
sprintf
(
"%08.2f autocampars: %s
\n
"
,
$ut
,
$msg
));
// date ("F j, Y, G:i:s")
}
function
log_error
(
$msg
)
{
log_msg
(
$msg
,
2
);
log_close
();
exit
(
1
);
}
function
log_close
()
{
log_msg
(
"Log file saved as "
.
$GLOBALS
[
'logFilePath'
],
3
);
log_msg
(
"----------------------------------------------"
,
0
);
fclose
(
$GLOBALS
[
'logFile'
]);
unset
(
$GLOBALS
[
'logFile'
]);
// to catch errors
}
/** Closes log file, optianally responxds with XML (if in HTTP mode), exits with 0/1 */
function
respond_xml
(
$result
,
$error
=
null
,
$color_mode
=
3
){
// default white bold
if
(
array_key_exists
(
'REQUEST_METHOD'
,
$_SERVER
)){
$xml
=
new
SimpleXMLElement
(
"<?xml version='1.0' standalone='yes'?><Document/>"
);
if
(
$result
!==
""
){
//"" will not be loged/output
if
(
is_string
(
$result
)
&&
((
count
(
$result
)
==
0
)
||
(
$result
[
0
]
!=
'"'
))){
$result
=
'"'
.
$result
.
'"'
;
}
$xml
->
addChild
(
'result'
,
$result
);
}
if
(
$error
){
$xml
->
addChild
(
'error'
,
'"'
.
$error
.
'"'
);
}
$rslt
=
$xml
->
asXML
();
header
(
"Content-Type: text/xml"
);
header
(
"Content-Length: "
.
strlen
(
$rslt
)
.
"
\n
"
);
header
(
"Pragma: no-cache
\n
"
);
printf
(
$rslt
);
}
if
(
isset
(
$GLOBALS
[
'logFile'
])){
if
(
$result
!==
""
){
//"" will not be loged/output
log_msg
(
''
.
$result
,
$color_mode
);
}
if
(
$error
){
log_error
(
$error
);
}
else
{
log_close
();
exit
(
0
);
}
}
}
?>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment