小编bin*_*yLV的帖子

调整图像大小而不失真保持纵横比,然后使用WideImage裁剪过量

我在我正在处理的网站上有一个区域,它将显示从外部源提取的用户个人资料图像(因此无法控制其原始大小).

我要做的是拍摄一张图片(在这个例子中1000px x 800px并将其调整为200px x 150px.显然,这有一个宽高比差异.

我想要做的是调整原始图像的大小而不失真,在这种情况下会产生200px x 160px图像.我当时想做的是从边缘裁剪任何多余的部分以产生正确的图像尺寸.因此,在这种情况下裁剪5px图像的顶部和底部,最终产生一个200px x 150px.

我目前有WideImage库,并希望使用它.我在SO上看过几个类似的问题,但我没想到的就是我想要实现的目标.

php image-resizing

13
推荐指数
2
解决办法
3万
查看次数

在PHP中并行执行函数

PHP可以调用函数而不是等待它返回吗?所以像这样:

function callback($pause, $arg) {
    sleep($pause);
    echo $arg, "\n";
}

header('Content-Type: text/plain');
fast_call_user_func_array('callback', array(3, 'three'));
fast_call_user_func_array('callback', array(2, 'two'));
fast_call_user_func_array('callback', array(1, 'one'));
Run Code Online (Sandbox Code Playgroud)

会输出

one (after 1 second)
two (after 2 seconds)
three (after 3 seconds)
Run Code Online (Sandbox Code Playgroud)

而不是

three (after 3 seconds)
two (after 3 + 2 = 5 seconds)
one (after 3 + 2 + 1 = 6 seconds)
Run Code Online (Sandbox Code Playgroud)

主脚本旨在作为永久进程(TCP服务器)运行.callback()函数将从客户端接收数据,执行外部PHP脚本,然后根据传递给的其他参数执行某些操作callback().问题是主脚本不能等待外部PHP脚本完成.外部脚本的结果很重要,因此exec('php -f file.php &')不是一个选项.


编辑:许多人建议看看PCNTL,所以似乎可以实现这样的功能.PCNTL在Windows中不可用,我现在无法访问Linux机器,所以我无法测试它,但如果有这么多人建议它,那么应该这样做:)

感谢大家!

php parallel-processing

10
推荐指数
1
解决办法
1万
查看次数

jquery,将对象(而不是字符串属性)附加到元素

我正在尝试使用jQuery构建DOM,并使用AJAX(data type = json)接收的数据填充它.我还想将这些数据存储为一个附加到特定DOM元素的对象.jQuery是否为此提供了任何方法?我想这样做的原因是因为最初只显示部分数据; 以后可能需要其他数据,具体取决于用户操作.

我尝试使用attr(),但它存储一个字符串"[object Object]"而不是一个实际的对象:

var div = $('<div/>');
div.attr('foo', {bar: 'foobar'});
alert(div.attr('foo')); // gives "[object Object]"
alert(typeof div.attr('foo')); // gives "string"
alert(div.attr('foo').bar); // gives "undefined"
Run Code Online (Sandbox Code Playgroud)

另一种方法是通过"绕过"jQuery(div[0].foo = {bar: 'foobar'};),虽然这似乎是一个"肮脏的解决方法",如果jQuery恰好已经支持附加对象.

有任何想法吗?提前致谢!

jquery

9
推荐指数
1
解决办法
4335
查看次数

正则表达式匹配CSS类名称

我正在尝试编写一个匹配有效的CSS类名结构的正则表达式.到目前为止我有这个:

$pattern = "([A-Za-z]*\.[A-Za-z]+\s*{)";

$regex = preg_match_all($pattern, $html, $matches);
Run Code Online (Sandbox Code Playgroud)

但是,类名可以采用我的正则表达式不匹配的以下格式:

p.my_class{
}
p.thisclas45{
}
Run Code Online (Sandbox Code Playgroud)

这些仅仅是一些情况,我已经四处查找了如何在样式块中命名类但无法找到任何内容的规则.任何人都知道类命名约定的规则在哪里?

我还需要考虑更多的案例吗?你会用什么正则表达式来匹配一个类名?

我已经使用PHP DOM Document类将其缩小为样式块.

css php regex

8
推荐指数
1
解决办法
1万
查看次数

共享数据库连接与私有数据库连接

试图找出如何管理/使用长期数据库连接.我没有这种经验,因为我只使用数据库与小型系统(最多约150个并发用户,每个用户都有自己的数据库用户/通行证,因此任何时候都有多达150个长期数据库连接)或网页(每个页面请求都有自己的数据库连接,持续时间不到一秒,因此并发数据库的数量并不大.)

这次将有一个Java服务器和Flash客户端.Java连接到PostgreSQL.预计连接将是长期存在的,即,当Flash客户端连接到Java服务器并且在Flash客户端断开连接时,它们预计会启动.在所有用户(客户端)之间共享单个连接或为每个客户端建立专用连接会更好吗?或者其他一些解决方案会更好?

*)单/共享连接:

  • (+)专业人士
    • 整个系统只有一个DB连接
  • ( - )缺点:
    • 无法使用事务(例如,"user1.startTransaction(); user1.updateBooks(); user2.updateBooks(); user1.rollback();"到单个共享连接将回滚user2完成的更改)
    • 一个用户的长查询可能会影响其他用户(但不确定)

*)私人连接:

  • (+)专业人士
    • 交易没问题:)
  • ( - )缺点:
    • 可能需要大量的并发连接,即如果有10000个在线用户,则需要10000个数据库连接,这似乎是太高的数量:)虽然我仍然对预期的用户数量一无所知,因为我们仍然在研究和规划过程中.

一种解决方案是引入超时,即如果DB连接未用于15/60/900(?)秒,则会断开连接.当用户再次需要DB时,它会重新连接.这对我来说似乎是一个很好的解决方案,但我想知道对此可能是合理的限制,例如,可能是并发数据库连接的最大数量,应该使用什么超时等.

另一种解决方案是将查询分组为两种"类型" - 一种可以安全地使用单个共享长生命连接的类型(例如,"更新用户设置last_visit = now(),其中id =:user_id"),以及另一种需要的类型私人短生活联系(例如,可能会做一些繁重工作或使用交易的东西).这个解决方案对我来说似乎并不吸引人,但如果这是应该做的,我可以尝试这样做......

那么......在这种情况下,其他开发者会做些什么呢?还有其他合理的解决方案吗?

java postgresql

5
推荐指数
1
解决办法
1629
查看次数

最佳实践:在Java中使用DB

首先,我是Java的新手.

我正在试图弄清楚从Java使用DB的好方法.我正在使用c3p0进行连接池.这次Hibernate或其他ORM不是一个选项,我们现在决定坚持使用"普通SQL".

目前基本的数据检索如下所示:

private int getUserID(int sessionID, String userIP) {
 int result = 0;
 Connection conn = null;
 PreparedStatement st = null;
 ResultSet rs = null;
 try {
  // Application.cpds is an instance of c3p0's ComboPooledDataSource
  conn = Application.cpds.getConnection();
  st = conn.prepareStatement("SELECT user_id, user_ip, is_timed_out FROM g_user.user_session WHERE id = ?");
  st.setInt(1, sessionID);
  rs = st.executeQuery();
  if ( rs.next() ) {
   if ( !rs.getBoolean("is_timed_out") && userIP.equals(rs.getString("user_ip")) ) {
    result = rs.getInt("user_id");
   }
  }
 }
 catch (SQLException e) {
  e.printStackTrace();
 } …
Run Code Online (Sandbox Code Playgroud)

java database

4
推荐指数
1
解决办法
1万
查看次数

分析不安全代码片段代码的好工具是什么?

我正在寻找一些可以对PHP脚本进行基本测试的工具.

这次我对复杂的测试解决方案不感兴趣,需要为每一段代码编写测试.我对功能测试既不感兴趣.

我期望这个工具做的是指出可能导致无效使用的代码片段:

  1. 变量;
  2. 函数参数;
  3. 函数返回值.

例如,无效的使用将使用NULL作为对象或数组,或者将boolean作为需要为数组或对象(或NULL)的arguent传递.

此外,它还可能会检查是否使用了"良好做法",即它可能会警告使用它是不安全的if ( $condition ) $doSomething;,如果它找到类似的东西.


为了说明该工具应该检测为"不安全"的代码片段,这里有几个例子.

在这种情况下,$filter可能是NULL,但它用作数组:

<?php
    function getList(array $filter = null) { 
        $sql = '...';
        // ...
        foreach ( $filter as $field => $value ) {
            // ...
        }
        // ...
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,$res可能是false,但它被用作resource.

<?php
    $res = mysql_query('...');
    while ( $row = mysql_fetch_assoc($res) ) {
        // ...
    }
    mysql_free_result($res);
Run Code Online (Sandbox Code Playgroud)

这里是相应的"安全"代码片段:

// $filter is used only if it's non-empty; as list …
Run Code Online (Sandbox Code Playgroud)

php code-analysis

2
推荐指数
1
解决办法
341
查看次数