我目前正在使用 xdebug 并尝试使用 KCacheGrind 进行分析和查看。我将它设置为仅对触发器进行操作,即XDEBUG_PROFILE=1通过GET传递。
关于我正在使用的框架的输出中有很多噪音,并且希望能够专门分析我的代码块,例如控制器,而不是整个请求。
我是否可以关闭 xdebug 分析,直到我选择将其打开,就像在控制器中一样,然后在需要时将其关闭?
在PHP 5中
$my_var = "";
if ($my_var == 0) {
echo "my_var equals 0";
}
Run Code Online (Sandbox Code Playgroud)
为什么评价为真?在php.net中有关于它的一些参考吗?
我首先要说我是 Docker 的新手。我正在尝试使用现有的 Lumen 微服务对 Docker 进行概念验证,但似乎无法让本地的 mysql 容器正常工作。
当我运行 php artisan migrate 时,出现此错误:
SQLSTATE[HY000] [2002] php_network_getaddresses:getaddrinfo 失败:名称或服务未知
这是我的 docker-compose.yml 文件
version: '3.7'
services:
# Nginx
web:
image: nginx:latest
ports:
- '8080:80'
volumes:
- .:/app
- .docker/nginx/site.conf:/etc/nginx/conf.d/default.conf
links:
- php
# Database
db:
container_name: db
image: mysql:5.7.24
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: local_mysql_password
MYSQL_DATABASE: partners
# PHP
php:
build: .
volumes:
- .:/app
links:
- db
depends_on:
- db
Run Code Online (Sandbox Code Playgroud)
我的 Dockerfile 用于 php 图像
FROM php:7.2-fpm …Run Code Online (Sandbox Code Playgroud) 无论当前数据库所在的时区如何,我都试图获取当前的GMT/UTC.我找到的可能解决方案是:
SELECT SYSTIMESTAMP AT TIME ZONE dbtimezone FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
它给了我目前的格林威治标准时间,但如果这是正确的方式,我不是100%自信.有人请帮助提供获得当前GMT的最佳方式吗?谢谢.
设置php_value memory_limit总是涉及一些猜测,我自己倾向于使用高于必要值,只是为了确保奇数内存饥饿调用不会导致致命错误.
尽管如此,我正在寻找一种行为类似于htop或top不是显示当前值的shell脚本,它只会记住PHP脚本消耗的最大内存并保留它.这样的价值,在几天之内,将是php_value memory_limit应该设定的非常有价值的指标.这样的事情存在吗?
请考虑以下有关Twitter API的代码段.data.followers_count如果置于锚标签中则无效.由于括号很多,我无法解决一些简单的连接问题.任何帮助是极大的赞赏.
function(data){
$('#twitter').html( document.getElementById('twitter').innerHTML + twitterusername[i] + ' ' +
<a href='someURL' title='someTitle'>data.followers_count</a> + ' Followers' + '<br/>');
}
Run Code Online (Sandbox Code Playgroud) 我有一个DateTime对象数组,需要在函数调用中将它们用作字符串.我尝试过铸造它,$string_datetime = (string)$myDateTimeObject;但这不起作用.搜索也一直没有用,因为大多数人都在询问如何将字符串转换为DateTime.
我的代码:
$start_date = new DateTime();
$end_date = new DateTime();
$end_date = $end_date->modify('+1 day');
// Add time range to request
$request['time_range'] = Array ( 'start' => $start_date,
'end' => $end_date);
Run Code Online (Sandbox Code Playgroud)
当调用一个需要字符串的函数(它是一个API调用)时,我收到这个错误:
可捕获的致命错误:类DateTime的对象无法转换为字符串
从DateTime对象转换/提取字符串的正确方法是什么?
我正在研究一个非常大的PHP代码库(主要是程序性的),在过去的10年里,我遇到的开发人员和我们现在正在经历大量的数据库负载.查看一些文件可显示正在执行的40到60个MySQL查询.花时间在这个大型令人讨厌的文件中找出它们的用途通常会显示它们已经进行了查询并且结果从未使用过.我觉得如果我能识别代码库中的问题区域,我就可以开始重构了.
我在StackOverflow上看到很多关于各种审计工具的帖子:
我还没有找到任何分析脚本中的查询用法的东西.例如,文件中包含多少SELECT,INSERT和UPDATE查询.更有趣的是,其中有多少包含在循环结构中?我写了一个快速的脏递归文件搜索来识别一些基本问题:
$it = new RecursiveDirectoryIterator($path);
foreach(new RecursiveIteratorIterator($it) as $file)
{
if(stristr($file, "/.") == false && stristr($file, "/..") == false)
{
$contents = file_get_contents($file);
// Regular MySQL queries...indicative of SQL injection points
$mysql_count = substr_count($contents, "mysql_query(");
$select_count = substr_count($contents, 'SELECT ');
$insert_count = substr_count($contents, 'INSERT INTO');
$update_count = substr_count($contents, 'UPDATE ');
if($mysql_count > 0 || $select_count > 0 || $insert_count > 0 || $update_count > 0)
{
$out[] = array('file' => $file,
'mysql_count' => $mysql_count,
'select_count' => …Run Code Online (Sandbox Code Playgroud) 所以,我正在使用PHP构建我的第一个超级基本CMS.我不想简单地复制我正在观看的教程中的代码,但我真的很了解它.困扰我的一件事是使用while循环来获取帖子.在下面的代码中,我无法看到圆括号内的语句如何构成条件.在我看来它所做的就是为变量$ post分配一个数组.我想,你怎么能循环不是条件的东西是我的问题.谢谢!
function get_posts () {
$query = mysql_query("SELECT * FROM posts") or die(mysql_error());
while ($post = mysql_fetch_assoc($query)) {
echo $post['Content'];
}
}
Run Code Online (Sandbox Code Playgroud) php mysql while-loop content-management-system conditional-statements
我正在制作一个 Android 应用程序,我希望它处于沉浸式模式,我使用插件完成了它,但我无法在带有缺口(顶部和底部的黑条)的 Android 设备上进行沉浸式工作。如何使用整个屏幕?
所以我读了很多解决方案:
setTimeout(function(){
if (window.AndroidFullScreen) {
window.AndroidFullScreen.immersiveMode();
AndroidFullScreen.showUnderStatusBar();
AndroidFullScreen.showUnderSystemUI();
}, 2000);
Run Code Online (Sandbox Code Playgroud)
(我还需要使用超时来应用更改,我不知道为什么,无论如何要在应用程序启动时应用代码,我正在使用 deviceready。
AndroidFullScreen.setSystemUiVisibility(
AndroidFullScreen.SYSTEM_UI_FLAG_LAYOUT_STABLE
| AndroidFullScreen.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| AndroidFullScreen.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| AndroidFullScreen.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| AndroidFullScreen.SYSTEM_UI_FLAG_FULLSCREEN
| AndroidFullScreen.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
, successFunction, errorFunction
);
Run Code Online (Sandbox Code Playgroud)
但问题是系统UI没有隐藏,当我从顶部拖动打开通知菜单并将其隐藏时,UI最终消失但屏幕又回到有黑条,所以它就像旧的沉浸模式()(同样这段代码又在setTimeOut中)。
我的配置.xml:
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.adia.security" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<platform name="android">
<allow-intent href="market:*" />
<preference name="AndroidLaunchMode" value="singleInstance" />
<preference name="DisallowOverscroll" value="true" />
<preference name="KeepRunning" value="true" />
</platform>
<edit-file parent="/manifest/application" target="AndroidManifest.xml">
<meta-data android:name="android.max_aspect" android:value="2.1" />
<activity android:resizeableActivity="false" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" …Run Code Online (Sandbox Code Playgroud)